我可以授权某人使用谷歌脚本中的菜单
问题描述:
我只是在我的电子表格中创建一个菜单,我想添加一个可以使用此菜单的用户列表。我只是想知道我是否可以使用addEditor(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();
}
目前我希望授予像“[email protected]”和“[email protected]”一些用户使用这种方法,别人做不到的。
请问我该怎么做?
答
不要以为只有脚本就可以做到这一点。尝试开发一个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,因为它有可以访问它的选项。
答
我认为最好的办法是将这种检查既添加到addNewRow()
和deleteLastRow()
:
if (checkUser()) {
//Add or delete row
}
else return;
其中checkUser函数看起来像:
function checkUser() {
var okUsers = ["[email protected]","[email protected]"];
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()
方法与前谷歌剧本我还没有尝试过,所以不知道这是支持的。 我也没有机会测试这个代码,但它应该工作。如果遇到任何问题,请告诉我。