0

我遵循了以下教程: https ://developers.google.com/apps-script/storing_data_spreadsheets#writing-1 。

首先,我有一个源电子表格,其中包含以下列(名字、姓氏和部门)和相关数据(在此处查看源文件的屏幕截图:https ://developers.google.com/apps-script/images/reading_spreadsheet_data_image1 .jpg)。

然后,我为每个部门名称动态创建一个工作表(参见教程代码):每个工作表都包含有关该部门员工的信息。(见教程截图)。

我已经定制了本教程,以动态地为每个部门创建一个电子表格,而不是每个部门一个工作表。

当每个子电子表格被修改时,我想启动一个“编辑时”触发器。此“编辑时”触发器将使用所有子电子表格数据重新生成源电子表格。

我已经测试了这个功能,但似乎我无法在远程电子表格上创建“OnEdit”触发器(执行验证问题)。似乎只能手动创建(“On Edit”触发器)。

是否可以使用 Google Script 动态创建远程电子表格上的触发器?

此致

4

1 回答 1

0

您可以创建一个触发器函数来处理来自远程电子表格或表单的事件。请参阅类 Triggerbuilder

创建触发器的脚本必须可以访问您的触发器函数 - 换句话说,它必须是同一脚本的一部分。

var ssKey = 'XXXXXXXXXXXXXXXXXXXXX';

function myFunction() {
  ScriptApp.newTrigger('myOnEdit')
           .forSpreadsheet(ssKey)
           .onEdit()
           .create();
}

function myOnEdit(e) {
  Logger.log(JSON.stringify(e));
}

当然,您会希望在触发函数中做一些有用的事情,但这只是一个示例。

有一个问题需要注意。此远程函数将不会接收“了解事件source”中“电子表格编辑事件”下记录的记录属性。请参阅Issue 2856,并为它加注星标以获取更新。

为什么这很重要?如果可行,您可能能够注册相同的触发器函数来处理所有电子表格中的事件,并使用该source属性一次处理一张工作表。

于 2013-06-04T21:01:53.603 回答