您需要一个onFormSubmit函数以及 可安装触发器。
如果您使用的是Html服务表单,您可以从表单事件 输出中获取目标表单的名称 。您无法使用电子表格中的 创建表单。我能够做的最好的事情是 ,用于将事件时间戳与 表格回复表的最后一行的时间戳进行比较,以确定哪些 表已更新。这不是完全的傻瓜证明,因为 多个表单可能同时在 提交(但不太可能)。
试试这个:
//installable trigger also needed.
function onFormSubmit(e){
var ts=e.namedValues.Timestamp
findResponseForm(ts)
}
function findResponseForm(ts) {
var ss=SpreadsheetApp.getActiveSpreadsheet()
var s=ss.getSheetByName('Form Responses 1') //get 'Form Responses 1' sheet
var lr=s.getLastRow() //get last row number of 'Form Responses 1' sheet
var s1=ss.getSheetByName('Form Responses 2') //get 'Form Responses 2' sheet
var lr1=s1.getLastRow() //get last row number of 'Form Responses 2' sheet
var time1=s.getRange(lr, 1, 1,1).getValue() //get 'Form Responses 1'last Timestamp
var ftime1=Utilities.formatDate(time1, "GMT-6", "d/M/yyyy' 'HH:mm:ss") //convert 'Form Responses 1'last Timestamp format to form Timestamp format
var time2=s1.getRange(lr1, 1, 1,1).getValue() //get 'Form Responses 2'last Timestamp
var ftime2=Utilities.formatDate(time2, "GMT-6", "d/M/yyyy' 'HH:mm:ss") //convert 'Form Responses 1'last Timestamp format to form Timestamp format
if(ts==ftime1){ //if date/time match
Logger.log('Form Responses 1')
//call function to prosses 'Form Responses 1' data
}
else if(ts==ftime2){ //if date/time match
Logger.log('Form Responses 2')
//call function to prosses 'Form Responses 2' data
//Add more 'else if' if more forms are involved.
}
}
埃德嗨, 谢谢您的回复,我已经更新了我的代码,并可以测试onFormSubmit运行时,它运行在正确的纸张脚本。我遇到的挑战是,当我使用Google表单提交表单时,表单将以通常方式填充电子表格,但我的脚本将无法运行。 我还需要做什么才能让脚本运行?我必须以某种方式部署/发布吗?我试图发布它,但可用的选项与我正在尝试做的不匹配。 –