我有几个谷歌表单,它们使用onFormSubmit触发器将提交的结果推入一个“主”Google (不同的文件)中,使用setValues来合并对表单的所有响应。这个“主”电子表格在其他列中对表单的结果进行一些数据处理,并将数据踢到另一个电子表格中。但是,我想不出如何将表单提交连接到“主”电子表格的脚本。
我最初假设表单的setValues函数onFormSubmit (我用来将表单的结果推到“主”)中会触发“主”表中的onEdit,但是快速搜索显示情况并非如此。因为它们在不同的项目中,我不知道表单的onFormSubmit脚本是否可以调用“主”电子表格项目中的函数。我读到过onChange()触发器并不适用于这样做,尽管Google声明它这样做了。
我不想用计时器更新。有关于让一个工作表的脚本自动启动另一个工作表的脚本的提示吗?
发布于 2015-10-26 16:15:31
正如您已经发现的,事件触发器是调用脚本的一种非常优雅的方法。将它们应用于脚本间通信的不幸的缺点是,没有支持IPC的特定触发器。自2012年以来(对于绑定到同一文档的脚本),第2231期一直有这样的功能的公开请求。
您的选择是利用现有的触发器或模拟一个网络应用程序。
IPC的现有电子表格触发器
Open显然不适用,所以我们跳过它。
Web应用程序
主脚本中的表单提交触发器函数可以通过附加到子表的web应用程序更新辅助电子表格。如何直接发布到Google表单中显示了这样一个web应用程序的例子。
假设子脚本按原样使用该脚本,主表单处理程序可以这样做:
/**
* Master form submission trigger function. Processes "master" form responses and passes data on
* to subSheet by calling a web app.
*
* From: https://stackoverflow.com/questions/33347541
*/
function onSubmit( e ) {
// Base URL of secondary processing script's form ("subForm")
var subSheetWebAppURL = "https://script.google.com/macros/s/--APP-ID--/exec";
// Process master form submission here...
// In this example, we're just passing values from Master through to the sub-sheet.
var a = UrlFetchApp.fetch(subSheetWebAppURL
+ "?col1="+e.values[1]
+ "&col2="+e.values[2]
);
}在这种方法中,在存储数据之前,web应用程序将在子表中进行任何需要的处理。
https://stackoverflow.com/questions/33347541
复制相似问题