【问题标题】:google app script: on form response, check which tab of the sheet collects the responses谷歌应用脚​​本:在表单响应中,检查工作表的哪个选项卡收集响应
【发布时间】:2018-06-08 17:43:38
【问题描述】:

我正在尝试使用 Google App Script 自动生成一些额外的数据来生成表单响应; (特别是唯一标识符)。 我可以在表单响应上触发脚本,但是我有多个表单连接到此工作表文档,因此我需要确保正确的表单触发响应,然后我想将值写入正确的工作表文件。

如何检查触发了哪个表单,以及如何找到收集其响应的表单?

【问题讨论】:

  • “我需要确保正确的表单触发了响应”你能详细说明一下吗?如果您希望特定表单触发触发器,您所要做的就是为这些表单安装触发器。您可能想查看documentation 的 onSubmit() 对象事件。
  • 混淆在于工作表与电子表格;当脚本在电子表格上运行时,一个表单连接到一个工作表,电子表格上可以有多个工作表。我解决了以下问题:var sheetId = "..."; var range = e.range; if(sheetId !== range.getSheet().getSheetId().toString()) { return; } 这有点骇人听闻,但是好的,它可以工作。
  • 很高兴你能成功。不是hackish,我认为这是完全正确的。也许您可以创建一个全局对象来跟踪表单以及它们连接到哪个表单(通过表单 ID)。

标签: google-apps-script google-forms google-sheets-api


【解决方案1】:

我假设您已经在工作表上设置了函数来捕获“提交时”事件。您可以从 e (event) 参数中获取 [sheet] 对象。

//make sure to set up the form submit trigger from
//your script menu: Edit -> Current Project's Triggers

function onSubmit(e) {
   var range = e.range
   var sheet = range.getSheet();

   //then do something with [sheet] object

}

我很确定您只能将一个表单连接到一个工作表,因此知道写入哪个工作表将告诉您提交了哪个表单。

documentation 中查看有关事件触发器的更多信息。

【讨论】:

  • 正如我在上面的评论中提到的,触发器会在任何表单提交时触发,其中一个电子表格上可以有多个。每个工作表对象确实最多只有一个。
  • 还有一个 FormApp.getDestinationId() 方法,但看起来它只是为您提供了电子表格的 ID。在您的情况下完全没用,因为它没有给出单个工作表 ID。
猜你喜欢
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2023-03-11
  • 2016-08-18
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多