我只是在电子表格中创建一个菜单,我想添加一个可以使用此菜单的用户列表。我只是想知道我是否可以使用addEditors(emailAddress)或其他一些方法来实现这一目的? 这是我写的代码
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Menu')
.addItem('Add new row', 'addNewRow') //Add "Add row" function to Custom menu
.addItem('Delete last row', 'deleteLastRow') //Add "Generate invoice" function to Custom menu
.addToUi();
}
目前我想授予一些像“me@gst.org.us”和“you@gst.org.us”这样的用户使用这种方法,其他人不能。
请问我怎么能这样做?
答案 0 :(得分:0)
不要仅仅通过编写脚本就可以做到这一点。尝试开发Apps Script Add-ons for Sheets, Docs, Slides and Forms。然后,检查Add-on Authorization Lifecycle和 Publishing Add-ons for Domain-Wide Installation了解访问和授权。
您还可以检查Apps Script web apps,因为它有可以访问它的选项。
答案 1 :(得分:0)
我认为最好的选择是将此检查添加到addNewRow()
和deleteLastRow()
:
if (checkUser()) {
//Add or delete row
}
else return;
checkUser函数如下所示:
function checkUser() {
var okUsers = ["me@gst.org.us","you@gst.org.us"];
var user = Session.getActiveUser().getEmail();
for (var u in okUsers) if (user == okUsers[u]) return true;
SpreadsheetApp.getUi().alert("Your email is not authorized to use this function.");
return false;
}
如果尝试使用该函数的人不在您的okUsers数组中,则checkUser()的计算结果为false,并且将警告用户他们未被授权。我想你也可以通过使用:
来摆脱for循环if (okUsers.includes(user)) return true;
但我之前没有尝试使用Array.includes()
方法和Google脚本,所以不确定是否支持。
我也没有机会测试这段代码,但它应该可行。如果您遇到任何问题,请告诉我。