Google Sheets Appscript всплывает быстрый ответ и скрывает листы, пока ответ не будет правильным - PullRequest
0 голосов
/ 27 января 2020

Я ищу скрипт для запуска всплывающего окна, запрашивающего у пользователя код при запуске, и он будет скрывать все листы, кроме одного, до тех пор, пока пользователь не введет правильный код, если пользователь не введет правильный код он будет продолжать запускать приглашение пользователя и держать все листы скрытыми, почти что поворот для защиты паролем, вот что у меня есть:

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();
}
}

1 Ответ

1 голос
/ 27 января 2020

При открытии документа вы хотите продолжать запрашивать пароль у пользователя до тех пор, пока он не будет правильным

Ваш код уже идет в правильном направлении, но нуждается в следующих модификациях:

  • заменить простой триггер onOpen на устанавливаемый . Browser.inputBox не будет работать при простом триггере.
  • Замените ваш оператор if, который проверяет правильный пароль, на while l oop, который продолжает запрашивать пароль как Пока это не правильно.
  • Чтобы показать все ваши листы, вам нужно l oop через то же самое, что вы делали при их скрытии.
  • Ваша функция 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();   
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...