【发布时间】:2017-07-30 15:58:46
【问题描述】:
我目前正在我的项目中使用 Google Apps 脚本。但面临触发器问题。 场景:
两个用户 - 用户A - 用户B
以 UserA 身份登录,创建了一个谷歌电子表格和脚本。还创建了一些触发器。例如
电子表格共享给具有编辑权限的 UserB。现在我以 UserB 身份登录。
案例 1:尝试向脚本添加新触发器 结果 => 触发器已创建,但仅对 UserB 可见
案例 2:修改现有触发器(由 UserA 创建) 结果 => 看不到由 UserA 创建的触发器。即使修改操作没有任何错误发生。该触发器没有应用任何更改。
案例 3:删除现有触发器(由 UserA 创建) 结果 => 看不到由 UserA 创建的触发器。即使删除操作没有任何错误发生。没有更改应用于该触发器。我仍然可以通过 UseA 登录看到它。
我的问题:
1.有什么办法 - 修改由 UserA 创建的 UserB 触发器? - 添加 UserB 的新触发器,并且对 UserA 可见?
- Google 应用程序脚本是否具有更改上下文/会话的功能?例如,虽然 UserB 已登录;将会话更改为 UserA 并执行整个操作(添加/修改/删除),然后再次更改回 UseB 会话?
以下是我的方法:
function createTimeDrivenTriggers() {
ScriptApp.newTrigger("assignEditUrls")
.timeBased()
.atHour(0)
.nearMinute(59)
.everyDays(1)
.create();
ScriptApp.newTrigger('processInputXML')
.timeBased()
.everyMinutes(5)
.create();
ScriptApp.newTrigger('assignFormResponseIDs')
.timeBased()
.everyMinutes(30)
.create();
ScriptApp.newTrigger('setSRHistoryColumn')
.timeBased()
.everyMinutes(1)
.create();
}
function createSpreadSheetTriggers() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger("onOpen")
.forSpreadsheet(sheet)
.onOpen()
.create();
ScriptApp.newTrigger("sendEmailNotificationsOnFormSubmit")
.forSpreadsheet(sheet)
.onFormSubmit()
.create();
ScriptApp.newTrigger("notifyProductAssigneeOnFormSubmit")
.forSpreadsheet(sheet)
.onFormSubmit()
.create();
}
function deleteTrigger() {
// Loop over all triggers.
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
}
任何帮助将不胜感激。提前致谢。
【问题讨论】: