我遵循了以下教程: https://developers.google.com/apps-script/storing_data_spreadsheets#writing-1。
首先,我有一个源电子表格,其中包含以下列(名字,姓氏和部门)和相关数据(请参阅此处的源文件屏幕截图:https://developers.google.com/apps-script/images/reading_spreadsheet_data_image1.jpg)。
然后,我为每个部门名称动态创建一个工作表(请参阅教程代码):每个工作表都包含有关该部门中员工的信息。 (见教程截图)。
我已经自定义了这个教程,每个部门动态创建一个电子表格,而不是每个部门一个工作表。
当修改每个子电子表格时,我想启动一个“On Edit”触发器。此“On Edit”触发器将使用所有子spreasheets数据重新生成源电子表格。
我已经测试了这个功能,但似乎我无法在远程电子表格上编写“OnEdit”触发器的创建(执行验证问题)。似乎只能手动创建(“编辑”触发器)。
是否可以使用Google Script动态创建远程电子表格上的触发器?
最好的问候
答案 0 :(得分:0)
您可以创建一个触发器功能来处理来自远程电子表格或表单的事件。请参阅Class Triggerbuilder。
创建触发器的脚本必须可以访问您的触发器功能 - 换句话说,它必须是同一脚本的一部分。
var ssKey = 'XXXXXXXXXXXXXXXXXXXXX';
function myFunction() {
ScriptApp.newTrigger('myOnEdit')
.forSpreadsheet(ssKey)
.onEdit()
.create();
}
function myOnEdit(e) {
Logger.log(JSON.stringify(e));
}
当然,你会想要在触发器功能中做一些有用的事情,但这只是一个例子。
有一个问题需要注意。此远程函数不会收到Understanding Events中“电子表格编辑事件”下记录的文档source
属性。请参阅Issue 2856,并将其标记为更新。
为什么重要?如果可行,您可能会注册相同的触发器功能来处理来自所有电子表格的事件,并使用source
属性一次处理一张表。