在提交时获取 Google 表单回复的内容



我正在尝试创建一个Google App Script来生成包含Google表单回复内容的Google Doc(问题的答案,上传的图像)。 是否可以执行以下操作?

  • 当用户提交表单时触发谷歌应用脚本(我认为可以通过手动安装触发器 https://developers.google.com/apps-script/guides/triggers/installable
  • )
  • 获取表单响应的内容
  • 生成包含表单回复内容的 Google 文档

提交后添加了以下内容

我想知道以下问题的答案来实现这一点。

  1. 如何在提交表单时触发应用脚本
  2. 如何从触发的脚本中获取表单响应对象

关于问题1, * 我们可以手动安装触发器 https://developers.google.com/apps-script/guides/triggers/installable#managing_triggers_manually * 我们可以得到这样的表单响应对象

function onFormSubmit(e) {
const form = FormApp.getActiveForm();
const formResponses = form.getResponses();
Logger.log('form id = ' + form.getId() + ', length = ' + formResponses.length);
const formResponse = formResponses[formResponses.length-1];
const itemResponses = formResponse.getItemResponses();
const doc = DocumentApp.create('New response');
const body = doc.getBody();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
const item = itemResponse.getItem();
body.appendParagraph('Response #%s to the question "%s" was "%s"',
(i + 1).toString(),
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
docblob = doc.getAs('application/pdf');
docblob.setName(doc.getName() + ".pdf");
const file = DriveApp.createFile(docblob);
DriveApp.addFile(file);
MailApp.sendEmail(
"mail address",
"new response",
file.getDownloadUrl())
}

触发器:

首先,您需要设置一个onFormSubmit触发器。

Mogsdad对此有一个很好的答案:

  1. 选择编辑>当前项目的触发器。您会看到一个面板,其中包含消息">未设置触发器"。单击此处立即添加一个。
  2. 单击链接。
  3. "运行">下,选择要由触发器执行的函数。(在这种情况下,这getResponse()
  4. 在">事件">下,选择"从电子表格"。
  5. 从下一个下拉列表中,选择">提交表单时"。
  6. 单击保存

注意:为此,需要在电子表格上设置触发器。


获取响应值:

正确设置触发器后,您所需要的只是:

function getResponse(e) {
var response = e.values;
}

在这里,我们使用事件对象来获取表单响应中提交的值。这将返回提交到电子表格的值数组,在我测试的示例中,数组如下所示:

[25/07/2019 10:02:36,选项 1,答案 2,选项 3]


引用:

  • 设置onFormSubmit触发器
  • 可安装触发器
  • 事件对象

最新更新