我有一张谷歌表格,其中有许多合作者正在进行数据输入。我希望如果输入错误,那么该工作表将自动锁定。我在谷歌应用程序脚本中编写了以下代码,但它没有发生。
注意: - 应用程序脚本中有一个触发器,电子表格中的每次编辑都会调用功能重复。
function protection() {
let ui = SpreadsheetApp.getUi();
let pin = "0000";
let attempt = "";
while (attempt != pin) {
attempt = ui.prompt("Enter pin to unlock the sheet").getResponseText()
}
ui.alert("Sheet unlocked")
}
function duplicate() {
let sheet = SpreadsheetApp.getActive().getSheetByName("Master");
let range = sheet.getRange("E:E");
let value = range.getValues();
let lastRow = sheet.getLastRow();
for (let i=0;i < lastRow;i++) {
if (value[i][0] === "FALSE") {
protection()
}
}
}
几点见解:
;
)。有时它们会在解析时自动“添加”,但您不应该依赖于此,而应该始终使用它们。getRange(1, 5, sheet.getLastRow())
而不是 getRange("E:E")
。if (value.some(cell => cell[0] == false)) {protection();}
.
"FALSE"
与 false
不同。protection()
功能也无法有效保护工作表。提示消息确实会不断弹出,直到输入正确的 PIN 码为止,但上一个提示关闭与下一个提示之间经过的非零时间为用户留下了一些时间来编辑工作表。我建议研究 Sheet.protect()
方法和 Protection 类。