【发布时间】:2020-11-12 16:33:35
【问题描述】:
我有一个电子表格,用作采购订单日志的模板。此电子表格有一个脚本化的 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");
}
}
【问题讨论】:
-
我猜如果他尝试执行这个功能,他会被提示一个窗口来授权应用程序。但如果你想完全自动化,那恐怕答案是否定的。
标签: google-apps-script google-sheets triggers authorization