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
Web services Google电子表格单元格和Google表单输入字段之间的显式对应关系_Web Services_Google Apps Script_Google Api_Google Sheets_Google Drive Api - Fatal编程技术网

Web services Google电子表格单元格和Google表单输入字段之间的显式对应关系

Web services Google电子表格单元格和Google表单输入字段之间的显式对应关系,web-services,google-apps-script,google-api,google-sheets,google-drive-api,Web Services,Google Apps Script,Google Api,Google Sheets,Google Drive Api,我正在制作一个网络表单,供人们报名参加活动。我发现我可以使用谷歌表单和谷歌电子表格来完成这项任务,我开始学习如何使用这些web应用程序。我还想将自动确认电子邮件发送给已注册的用户。对于这项任务,我还研究了谷歌应用程序脚本。据我所知,我应该定义一个函数,在电子表格中以脚本形式发送电子邮件,并在“表单提交事件”中触发此函数。我想确定根据提交的数据注册的人员的电子邮件地址,并且我想在确认电子邮件中包括所有提交的数据以及时间戳 我的问题如下 如何识别电子表格中存储表单中输入字段值的单元格 或者,是否有

我正在制作一个网络表单,供人们报名参加活动。我发现我可以使用谷歌表单和谷歌电子表格来完成这项任务,我开始学习如何使用这些web应用程序。我还想将自动确认电子邮件发送给已注册的用户。对于这项任务,我还研究了谷歌应用程序脚本。据我所知,我应该定义一个函数,在电子表格中以脚本形式发送电子邮件,并在“表单提交事件”中触发此函数。我想确定根据提交的数据注册的人员的电子邮件地址,并且我想在确认电子邮件中包括所有提交的数据以及时间戳

我的问题如下

  • 如何识别电子表格中存储表单中输入字段值的单元格
  • 或者,是否有任何方法可以从谷歌应用程序脚本中读取各个输入字段的值
如果您能向我推荐一份与这些问题相关的明确的API参考资料,我将非常高兴

到目前为止,我从Google Drive提供的帮助页面了解到了这些应用程序, e、 g

不过,我觉得那里的文件太简洁了

我正在学习如何通过以下Google Apps脚本发送确认电子邮件:

我找不到一个帮助文档明确地将Google表单中的输入字段与Google电子表格中的单元格联系起来。从我有限的实验案例来看,时间戳似乎总是存储在电子表格的第一列。这有保证吗?“电子表格提交事件”类的“namedValues”成员似乎包含“表单提交中的问题名称和值”。() 然而,当我修改Google表单时,“namedValues”成员仍然保留与已删除的输入字段相对应的元素。有没有办法只循环“namedValues”中那些与用户实际输入的字段相对应的元素


我也很高兴听到替代谷歌表单和谷歌电子表格的工具。

这个答案适用于2013年版的“新表单”,而不是已经停产的“旧表单”

如何在电子表格中识别包含 是否存储表单中的输入字段

您可以通过第1行中的标签识别将收集表单问题答案的列。有了这些知识,您可以在函数中按列号引用答案,例如
getRange()

…是否有任何方法可以读取相应输入的值 谷歌应用程序脚本中的字段

有多种方法可以引用输入值:

  • 如中所示,使用表单提交触发的函数可以从事件本身检索输入值。这里有两种选择;您可以在一个数组中获得一组
    ,以及
    名称值
    ,您可以使用问题文本作为名称来引用这些值

  • 您可以从电子表格中读取数据;在前面提到的同一个触发器函数中,可以使用
    e.range.getValues()
    获取包含所有提交值的数组,然后可以通过索引引用该数组。请记住,这将是一个基于0的数组,而列编号从1开始

从我有限的实验案例来看,似乎 时间戳始终存储在电子表格的第一列中。 这有保证吗

除非修改电子表格,否则时间戳将位于第一列。可以在表单创建的数据表左侧插入列,这将影响表单结果在工作表中的位置(尽管
e.range
将进行调整)。以下所有值的顺序将是表单中创建问题的顺序。请注意,如果您删除了一列(例如,因为您从表单中删除了问题),那么“已删除”问题的列将在行的末尾重新创建

…当我修改Google表单时,“NamedValue”成员仍然 保存与已删除的输入字段对应的元素。有吗 仅在
namedvalue
中对应的元素上循环的方法 用户实际输入的字段

记住过去的问题是有原因的,尽管当这些问题不用于收集任何真实数据时,它们只是一个麻烦。可以使用更好的计划来避免问题

事件中未回答的问题将是空字符串(例如
e.namedValues[“死问题”]==''
)。所以你可以这样跳过它们:

for (var ans in e.namedValues) {
  if (e.namedValues[ans] != '') {
    doSomethingWith(e.namedValues[ans]
  }
}
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var headers = sheet.getDataRange().getValues()[0];
还要注意的是,您可以获得“标题”数组或表单问题,如下所示:

for (var ans in e.namedValues) {
  if (e.namedValues[ans] != '') {
    doSomethingWith(e.namedValues[ans]
  }
}
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var headers = sheet.getDataRange().getValues()[0];

…然后使用
标题搜索
以查找包含您要查找的答案的列。

为什么不从M Hawksey的应用程序脚本事件管理器开始?应用程序脚本文档是,并且最近已更新。所有的类和方法都记录在“参考”下。谢谢你的回答。你是怎么学会这些规则的?有谷歌提供的文档吗,或者你是从你的经历中发现的?在阅读了您的答案之后,我可以更清楚地说明我想做的事情:我想获取表单当前版本中输入字段的值,按照字段在表单中的显示顺序,无论值是否为null。如果我在更改表单中问题(输入字段)的名称或顺序时记得更新脚本,我可以通过阅读
namedValues
部分来完成。我可以写一个更通用的脚本吗?@norio-主要是通过我自己使用表单以及StackOverflow和其他论坛中的示例获得的经验。(请尝试在此处搜索
[google apps script]+form
)apps script g