我通过电子表格以编程方式创建了一堆表单,并将响应触发器绑定(bind)到每个表单。填写表格后,我似乎无法弄清楚填写的是哪张表格。
我尝试过:
Event.source.getId()
但这会返回电子表格的 ID。我想获得表格的标题。
编辑:澄清
这就是我设置触发器的方式:
ScriptApp.newTrigger('responseTrigger').forForm(form)
.onFormSubmit()
.create();
当我尝试获得标题时:
function responseTrigger(e) {
var source = e.source;
var title = e.source.getTitle().
Logger.log(title);
}
我收到以下错误:
Execution failed: TypeError: Cannot find function getTitle in object Spreadsheet.
最佳答案
我终于解决了这个问题。
有一个知道Google Scripts issue这就是我的问题所在。您可能希望 e.source.getID()
为您提供表单的 ID,但它却为您提供电子表格的 ID。我找到了solution in this question 。您要做的就是找到触发器的唯一 ID,并将其与所有项目触发器交叉引用,如下所示:
function getFileByTriggerId(triggerId){
var triggers = ScriptApp.getProjectTriggers();
for(var i =0; i<triggers.length; i++){
if(triggers[i].getUniqueId() == triggerId){
return triggers[i].getTriggerSourceId();
}
}
}
然后在您的响应触发器中写入:
function responseTrigger(e) {
var realEvent = getFileByTriggerId(e.triggerUid);
var form = FormApp.openById(realEvent);
var title = form.getTitle();
}
关于google-apps-script - 来自 FormResponse 的表单标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42161315/