如何在自动创建的文件(使用谷歌脚本)上配置“on edit”触发器?

时间:2013-02-18 16:53:23

标签: triggers google-apps-script google-sheets

我遵循了以下教程: 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动态创建远程电子表格上的触发器?

最好的问候

1 个答案:

答案 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属性一次处理一张表。