Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在创建新电子表格时安装基于时间的触发器_Google Apps Script_Google Sheets_Triggers_Authorization - Fatal编程技术网

Google apps script 在创建新电子表格时安装基于时间的触发器

Google apps script 在创建新电子表格时安装基于时间的触发器,google-apps-script,google-sheets,triggers,authorization,Google Apps Script,Google Sheets,Triggers,Authorization,我有一个电子表格,用作采购订单日志的模板。此电子表格有一个脚本化的onOpen(e)函数,可自动为另一个函数创建定时触发器,该函数将电子表格作为XLS文件下载到特定的共享驱动器 触发器的目的是使下载过程自动化,以便不会因人为错误而丢失任何复制的电子表格数据 我的问题是,当用户复制模板时,onOpen(e)功能将不会运行,因为您必须手动授权该用户运行新电子表格的脚本 有没有办法自动执行脚本授权 function onOpen(e) { var ss = SpreadsheetApp.getAc

我有一个电子表格,用作采购订单日志的模板。此电子表格有一个脚本化的
onOpen(e)
函数,可自动为另一个函数创建定时触发器,该函数将电子表格作为XLS文件下载到特定的共享驱动器

触发器的目的是使下载过程自动化,以便不会因人为错误而丢失任何复制的电子表格数据

我的问题是,当用户复制模板时,
onOpen(e)
功能将不会运行,因为您必须手动授权该用户运行新电子表格的脚本

有没有办法自动执行脚本授权

function onOpen(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssn = ss.getId();
  var ssf = DriveApp.getFileById(ssn);
  var test = ss.getOwner().getEmail();
  var tName = ScriptApp.getProjectTriggers();
 
  if (test !=  "itadmin@company.com") {
  
    if (tName.length > 0) {
      ScriptApp.deleteTrigger(tName.pop());
    }

    ScriptApp.newTrigger('downloadXLS')
      .timeBased()
      .onWeekDay(ScriptApp.WeekDay.MONDAY)
      .atHour(1)
      .create();

    ss.addEditor("itadmin@company.com");
    ssf.setOwner("itadmin@company.com");
  }
}

每次打开电子表格时,都会执行
onOpen
简单触发器。我认为,在“创建新的电子表格时”创建触发器是一个错误的选择。另一方面,没有办法自动授权有界脚本

另一种方法是创建附加组件。这种方法的优点之一是,在第一次安装脚本和更改脚本作用域时,将需要授权

另一个优点是,所有电子表格都将使用单个脚本,而不是在每个电子表格上都有原始脚本的副本

资源


我猜如果他尝试执行此功能,他将被提示一个窗口来授权应用程序。但是如果你想让它完全自动化,那么恐怕答案是否定的。