如何使用密码保护Google表格

时间:2019-05-24 19:15:43

标签: javascript google-apps-script

我有一个Google表格,其中的数据受到保护-用户无法编辑该表格。运行AskUser函数时,将出现一个弹出框,询问用户是否要“取消保护”工作表。当他们单击“否”时,将告诉他们什么都不会发生。当他们单击“是”时,将被告知需要提交密码。我有三个问题:

  1. 我不知道如何设置密码。

  2. 我不知道如何弹出一个对话框,用户可以在其中提交密码。

  3. 我不知道如何检查密码是否正确。

我曾尝试下载受密码保护的工作表并检查代码,但是它们使用了怪异的HTML格式。这是我到目前为止的内容:

const memoizedValue = useMemo(() => MY_RATIO * value, [MY_RATIO, value])

我对Javascript和Google表格完全陌生。

2 个答案:

答案 0 :(得分:0)

设置密码

使用PropertiesService存储密码

function setPassword(password) {
  let prop = PropertiesService.getUserProperties();
  prop.setProperty("sheetpassword", password);
}

显示密码表单

在文件中创建html表单,例如passwordform

然后,当您要显示表单时,请致电createHtmlOutputFromFile

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.show(HtmlService.createHtmlOutputFromFile('passwordform'));

在表单提交时,调用检查密码功能

onclick='google.script.run.checkPassword(document.getElementById("passwordInput"));'

检查密码

PropertiesService获取属性,看看它是否相等

function checkPassword(password) {
  let prop = PropertiesService.getUserProperties();
  if (prop.getProperty("sheetpassword") === null || prop.getProperty("sheetpassword") !== password) {
    return false; // Doesn't match DB
  } 
}

答案 1 :(得分:0)

这是一个技巧,但对免费帐户用户很有用! 使用 onOpen() 函数和下面的小代码。

var inputPassword;
function checkPassword(){  
  
  var refAddress = 'https://script.google.com/d/' + ScriptApp.getScriptId() + '/edit';
  var curAddress = refAddress;
  Logger.log(curAddress);  
  
  var referPassword = 1234;

  if( refAddress == curAddress){
      while(referPassword != inputPassword){
      inputPassword = Browser.inputBox('[Password Check]', '[Input Password!]', Browser.Buttons.OK_CANCEL);
    }
  }
}

有关详细信息,请参阅 my blog