假设您有一个 Excel 文件,其中包含两个按钮,名为
populate-current
和 populate-all
。两个按钮都会触发相同的 Office 脚本,其中包含如下内容:
function populateByRowIndex(workbook: ExcelScript.Workbook, rowIndex: number): void {
// populate values for row
}
function getAllRowIndexesToPopulate(workbook: ExcelScript.Workbook): number[] {
// get row indexes
}
function main(workbook: ExcelScript.Workbook) {
const IS_POPULATE_ALL_BUTTON = ???
if (IS_POPULATE_ALL_BUTTON) {
for (const rowIndex of getAllRowIndexesToPopulate(workbook)) {
populateByRowIndex(workbook, rowIndex)
}
} else {
populateByRowIdx(workbook, workbook.getActiveCell().getRowIndex())
}
}
为了根据单击的按钮运行所需的功能,
IS_POPULATE_ALL_BUTTON
应该是什么?
另一种选择:除了复制粘贴之外,是否可以通过其他方式在另一个脚本中重用一个脚本中的逻辑?
import { ... } from ...
给出“不能在模块外部使用 import 语句”,const { ... } = require(...)
给出“找不到名称‘require’”。基本上,我只是想要一种重新使用 populateByRowIndex
中的逻辑而不重复代码的方法 - 我不介意结果是否需要一个或多个脚本文件。
您可以使用脚本参数。这样,当有人使用脚本时,他们将输入要更新的行(或所有行或当前行的二进制选项,如您的场景中)。
这是一个让用户在两个选项之间进行选择的示例。它使用字符串文字的联合为用户提供两种选择。
function main(workbook: ExcelScript.Workbook, populationSetting: "PopulateAll" | "PopulateCurrentRow") {
if (populationSetting == "PopulateAll" ) {
// get row indexes
} else if (populationSetting == "PopulateCurrentRow") {
// populate values for row
}
}
这是用户运行脚本时将看到的内容。