Google apps script 如何找出触发脚本的表单?
我试图让我的独立脚本成为多个表单的公共触发器(onFormSubmit触发器),并确定哪个表单触发了脚本Google apps script 如何找出触发脚本的表单?,google-apps-script,Google Apps Script,我试图让我的独立脚本成为多个表单的公共触发器(onFormSubmit触发器),并确定哪个表单触发了脚本 function myFunction() { ScriptApp.newTrigger('onFormSubmit').forForm('FormID_1').onFormSubmit().create(); ScriptApp.newTrigger('onFormSubmit').forForm('FormID_2').onFormSubmit().create(); Scr
function myFunction() {
ScriptApp.newTrigger('onFormSubmit').forForm('FormID_1').onFormSubmit().create();
ScriptApp.newTrigger('onFormSubmit').forForm('FormID_2').onFormSubmit().create();
ScriptApp.newTrigger('onFormSubmit').forForm('FormID_3').onFormSubmit().create();
}
function onFormSubmit(e){
Logger.log(e);
}
但是,参数e只有{authMode=FULL,response=FormResponse,triggerUid=…},没有FormId
我如何知道是哪种形式触发了脚本?请将此视为几个答案之一。根据您的问题,您可以从参数
e
中检索triggerUid
。那么,如何使用PropertiesService保存triggerUid
triggerUid
是每个触发器的ID。通过使用此ID,可以检索提交的表单
使用此示例脚本时,首先请运行myFunction()
,然后使用表单提交。您可以在Stackdriver(查看->Stackdriver日志)上看到结果。可以检索所使用表单的表单ID
示例脚本如下所示
示例脚本:
参考:
是的,这是一个可选的解决方案。我以前也这么认为。但是,考虑到维护成本的增加,我认为这种方法不好。(1.当我需要删除某个触发器时,我会很容易出错,因为没有名称,只有数字。2.很难告诉不懂编码的人如何添加或删除触发器)问题是我有多个表单需要在FormSubmit上执行相同的操作。最初,我将相同的代码复制到每个表单的编辑器中,并手动设置触发器。最近我发现这个解决方案有一个问题,当我需要更新一些代码时,我需要打开每个表单的编辑器进行修改。所以我想做一些更改以降低维护成本,你有什么好的iead吗@Tanaike@Zhiyong很抱歉给您带来不便。我更新了我的答案。请确认一下。如果我误解了你的问题,请告诉我。我想修改。谢谢你的耐心。我认为这不是个好主意。1.我需要formId来完成我职能范围内的工作。2.使用多个功能会导致重复,需要维护的线路太多。@Zhiyong给您带来不便,非常抱歉。如何使用每个表单的标识值?当收到响应时,它根据参数
e
中包含的标题和项目名称标识每个表单。
function myFunction() {
var FormID_1 = 'FormID_1';
var FormID_2 = 'FormID_2';
var FormID_3 = 'FormID_3';
var form1 = ScriptApp.newTrigger('onFormSubmit').forForm(FormID_1).onFormSubmit().create();
var form2 = ScriptApp.newTrigger('onFormSubmit').forForm(FormID_2).onFormSubmit().create();
var form3 = ScriptApp.newTrigger('onFormSubmit').forForm(FormID_3).onFormSubmit().create();
var forms = {};
forms[FormID_1] = form1.getUniqueId();
forms[FormID_2] = form2.getUniqueId();
forms[FormID_3] = form3.getUniqueId();
PropertiesService.getScriptProperties().setProperties(forms);
}
function onFormSubmit(e) {
var forms = PropertiesService.getScriptProperties().getProperties();
for (v in forms) {
if (forms[v] == e.triggerUid) {
console.log(v) // v is the form name which was submitted. You can see this at Stackdriver.
}
}
}
function myFunction() {
ScriptApp.newTrigger('form1').forForm('FormID_1').onFormSubmit().create();
ScriptApp.newTrigger('form2').forForm('FormID_2').onFormSubmit().create();
ScriptApp.newTrigger('form3').forForm('FormID_3').onFormSubmit().create();
}
function form1(e){
onFormSubmit(e)
}
function form2(e){
onFormSubmit(e)
}
function form3(e){
onFormSubmit(e)
}
function onFormSubmit(e){
Logger.log(e);
}