Google apps script 如何找出触发脚本的表单?

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

我试图让我的独立脚本成为多个表单的公共触发器(onFormSubmit触发器),并确定哪个表单触发了脚本

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

示例脚本如下所示

示例脚本: 参考:
如果我误解了你的问题,我很抱歉

编辑: 这个怎么样?在这种情况下,每个表单都有各自的功能。每个函数调用onFormSubmit(e)


是的,这是一个可选的解决方案。我以前也这么认为。但是,考虑到维护成本的增加,我认为这种方法不好。(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);
}