我有一个Google表格,其中的数据受到保护-用户无法编辑该表格。运行AskUser函数时,将出现一个弹出框,询问用户是否要“取消保护”工作表。当他们单击“否”时,将告诉他们什么都不会发生。当他们单击“是”时,将被告知需要提交密码。我有三个问题:
我不知道如何设置密码。
我不知道如何弹出一个对话框,用户可以在其中提交密码。
我不知道如何检查密码是否正确。
我曾尝试下载受密码保护的工作表并检查代码,但是它们使用了怪异的HTML格式。这是我到目前为止的内容:
const memoizedValue = useMemo(() => MY_RATIO * value, [MY_RATIO, value])
我对Javascript和Google表格完全陌生。
答案 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。