有没有办法制作保留可安装触发器的电子表格副本?

时间:2016-04-07 13:23:50

标签: google-apps-script google-sheets

我有一份我为工作制作的电子表格,我需要制作多份副本并分发给同事。我的“主”电子表格有一堆受保护的列,以及一个Auto Sort java脚本函数。由于保护措施到位,我无法使用简单的触发器,因为用户的权限级别不允许java脚本工作。

为了解决这个问题,我使用的是可安装的触发器,允许JS使用我的权限来运行。问题是,每次我制作副本时,我都必须进入并设置触发器,这是一个巨大的痛苦。有没有办法制作同时保留可安装触发器的副本?

如果没有,是否有不同的方法可以设置触发器在这种情况下工作?

1 个答案:

答案 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));
}