谷歌表格Appscript弹出提示响应并隐藏表格,直到响应正确



我正在寻找一个脚本来启动一个弹出窗口,提示用户在启动时输入代码,它将隐藏所有工作表,但直到用户输入正确的代码,如果用户没有输入正确的代码,它将继续启动用户提示并保持所有工作表隐藏, 几乎是密码保护的转机,这就是我到目前为止所拥有的:

function onOpen() {

function hideAllSheetsExcept('Sheet1') {
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i =0;i<sheets.length;i++){
Logger.log(i);
if(sheets[i].getName()!=sheetName){
sheets[i].hideSheet();
}
}
var quest = Browser.inputBox("Enter the requested value");
if quest == '12345' then
sheets[i].showSheet();
}
}

在文档的打开事件中,您希望继续要求用户输入密码,直到密码正确为止

您的代码已经朝着正确的方向发展,但需要进行以下修改:

  • 通过可安装的触发器替换简单的触发器onOpenBrowser.inputBox不会在简单触发器上运行。
  • 将检查正确密码的if语句替换为一个while循环,只要密码不正确,该循环就会不断询问密码。
  • 要显示所有工作表,您需要以与隐藏它们时相同的方式循环浏览相同的工作表。
  • 你的函数hideAllSheetsExcept不应该嵌套在onOpen中,而只能从那里调用。

请参阅以下示例,了解如何实现所需的 功能,当绑定到openSheets可安装onOpen触发器:

function openSheets(){   
hideAllSheetsExcept('Sheet1')
}
function hideAllSheetsExcept(sheetName) {
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i =0;i<sheets.length;i++){
Logger.log(i);
if(sheets[i].getName()!=sheetName){
sheets[i].hideSheet();
}
}
var quest="";
while (quest!='12345'){
quest = Browser.inputBox("Enter the requested value");
}
for(var i =0;i<sheets.length;i++){
sheets[i].showSheet();   
}
}

最新更新