我有一份我为工作制作的电子表格,我需要制作多份副本并分发给同事。我的“主”电子表格有一堆受保护的列,以及一个Auto Sort java脚本函数。由于保护措施到位,我无法使用简单的触发器,因为用户的权限级别不允许java脚本工作。
为了解决这个问题,我使用的是可安装的触发器,允许JS使用我的权限来运行。问题是,每次我制作副本时,我都必须进入并设置触发器,这是一个巨大的痛苦。有没有办法制作同时保留可安装触发器的副本?
如果没有,是否有不同的方法可以设置触发器在这种情况下工作?
答案 0 :(得分:1)
副本不包含触发器,解决方案只是创建一个“安装”功能,该功能将使用用户权限创建触发器,同时还要求授权。 接收副本的用户必须在首次使用时运行该功能,只需要让他们这样做,使用一个弹出消息,该消息将在“onOpen”函数中运行,直到执行安装功能。
下面的是整个过程的代码示例:
function onOpen() {
SpreadsheetApp.getUi()
.createMenu("Utilities")
.addItem("install", 'install')
.addToUi();
if(keys.length==0){ // if no properties has been written
Browser.msgBox('Please run the installation procedure from the menu');
}
}
var keys = PropertiesService.getScriptProperties().getKeys();// this is placed outside of the function to define keys as global
function install(){
ScriptApp.newTrigger('yourfunctionName').forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
PropertiesService.getScriptProperties().setProperty('key', 'installed correctly');
}
function yourfunctionName(e){
Browser.msgBox(JSON.stringify(e));
}