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
简单触发器。我认为,在“创建新的电子表格时”创建触发器是一个错误的选择。另一方面,没有办法自动授权有界脚本
另一种方法是创建附加组件。这种方法的优点之一是,在第一次安装脚本和更改脚本作用域时,将需要授权
另一个优点是,所有电子表格都将使用单个脚本,而不是在每个电子表格上都有原始脚本的副本
资源