我可以授权某人使用谷歌脚本中的菜单

问题描述:

我只是在我的电子表格中创建一个菜单,我想添加一个可以使用此菜单的用户列表。我只是想知道我是否可以使用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 LifecyclePublishing 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()方法与前谷歌剧本我还没有尝试过,所以不知道这是支持的。 我也没有机会测试这个代码,但它应该工作。如果遇到任何问题,请告诉我。