Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 可安装触发器以不同形式触发脚本?_Google Apps Script_Triggers_Google Forms - Fatal编程技术网

Google apps script 可安装触发器以不同形式触发脚本?

Google apps script 可安装触发器以不同形式触发脚本?,google-apps-script,triggers,google-forms,Google Apps Script,Triggers,Google Forms,我正在尝试运行一个脚本,该脚本在提交不同的表单(B)时连接到一个表单(a)。我有一系列不同的表单,它们是相似的,需要运行相同的脚本,因此我不想把代码复制到每个脚本中,而是想知道这是否可行。 我成功地在A中创建了一个可安装的触发器函数,指向B。当出现提示时,我已授予权限。 当我发布B时,A中的脚本会触发,我会在日志中看到: Exception: No response with ID 2_ABaOnudSFDkNQOL2Xn4fNOmT95GrTotEW8LSjxfI5qf6qceDN5hD5CH

我正在尝试运行一个脚本,该脚本在提交不同的表单(B)时连接到一个表单(a)。我有一系列不同的表单,它们是相似的,需要运行相同的脚本,因此我不想把代码复制到每个脚本中,而是想知道这是否可行。 我成功地在A中创建了一个可安装的触发器函数,指向B。当出现提示时,我已授予权限。 当我发布B时,A中的脚本会触发,我会在日志中看到:

Exception: No response with ID 2_ABaOnudSFDkNQOL2Xn4fNOmT95GrTotEW8LSjxfI5qf6qceDN5hD5CHKqNT5D4G_DdONWq0 exists for this form.
    at onFormAnswerSubmit(Kod:40:20)
停止的行(Kod:40:20)是获取已发布数据的行:

  var items    = e.response.getItemResponses();
这应该是可行的,还是不可能将发布的数据从一个表单传递到另一个表单中的脚本

或者我还能在扳机上做些什么?就像强迫传递e。还是什么? 以下是我创建的触发器:

/**
 * Creates a trigger for when a different form is posted that runs a function in this script (run once)
 */
function createOtherFormTrigger() {
  var formID = FormApp.openById("XXXXX"); // form B
    
  ScriptApp.newTrigger('onFormAnswerSubmit') // a function in this script, in form A
      .forForm(formID)
      .onFormSubmit()
      .create();
}

您需要稍微更改逻辑:

在触发器上激发的函数应作为触发器包含在脚本中。 为表单B创建formSubmit触发器的示例代码:

//运行一次
函数createOtherFormTrigger(){
var formB=FormApp.openById(“XXX”);
ScriptApp.newTrigger('onFormAnswerSubmit')//此脚本中的函数,格式为B
.forForm(formB)//活动窗体为formB
.onFormSubmit()
.create();
}
函数onFormAnswerSubmit(e){
var formB=e.来源;
var items=e.response.getItemResponses();//表单B的最新表单响应的项
var formA=FormApp.openById(“XXXX”);//表格A
... 
//用表格A做你需要做的事情
}

上面的代码将创建在提交表单B的表单响应时触发的触发器。因此,脚本绑定到表单A、表单B或is都不重要。实际上,在独立脚本中实现这些函数可能是最有意义的,以确保它们不会干扰表单绑定脚本中的其他表单提交触发器。

您需要稍微更改逻辑:

在触发器上激发的函数应作为触发器包含在脚本中。 为表单B创建formSubmit触发器的示例代码:

//运行一次
函数createOtherFormTrigger(){
var formB=FormApp.openById(“XXX”);
ScriptApp.newTrigger('onFormAnswerSubmit')//此脚本中的函数,格式为B
.forForm(formB)//活动窗体为formB
.onFormSubmit()
.create();
}
函数onFormAnswerSubmit(e){
var formB=e.来源;
var items=e.response.getItemResponses();//表单B的最新表单响应的项
var formA=FormApp.openById(“XXXX”);//表格A
... 
//用表格A做你需要做的事情
}

上面的代码将创建在提交表单B的表单响应时触发的触发器。因此,脚本绑定到表单A、表单B或is都不重要。实际上,在独立脚本中实现这些函数可能是最有意义的,以确保它们不会干扰表单绑定脚本中的其他表单提交触发器。

我也有同样的问题。无论我把
e.response
放在哪里,我都会得到同样的错误。看来唯一的解决办法是使用独立脚本而不是有界脚本。

我也有同样的问题。无论我把
e.response
放在哪里,我都会得到同样的错误。看起来唯一的解决办法是使用独立脚本而不是绑定脚本。

表单实际上没有连接到任何工作表,我使用表单端的脚本将数据转储到google文档并发送电子邮件。您不需要将脚本添加(绑定)到其他表单。只要所有内容都在同一个帐户中,任何应用程序脚本文件都可以影响任何其他表单。您只需要表单文件ID就可以获取任何其他表单,并对该表单执行某些操作。应用程序脚本代码可以根据表单的文件ID打开表单。影响表单的脚本文件不需要绑定到它打开的表单。如果希望以编程方式在表单中创建新响应(向表单中添加数据),这是可能的。你不需要在其他表单中创建触发器。这些表单实际上没有连接到任何工作表,我使用表单端的脚本将数据转储到google文档并发送电子邮件。你不需要将脚本添加(绑定)到其他表单。只要所有内容都在同一个帐户中,任何应用程序脚本文件都可以影响任何其他表单。您只需要表单文件ID就可以获取任何其他表单,并对该表单执行某些操作。应用程序脚本代码可以根据表单的文件ID打开表单。影响表单的脚本文件不需要绑定到它打开的表单。如果希望以编程方式在表单中创建新响应(向表单中添加数据),这是可能的。你不需要在其他表单中创建一个触发器。谢谢,我把它做成了一个独立的。谢谢你帮我弄明白逻辑!谢谢,我把它做成了一个独立的。谢谢你帮我弄明白逻辑!