我正在尝试创建一个Google App Script来生成包含Google表单回复内容的Google Doc(问题的答案,上传的图像)。 是否可以执行以下操作?
- 当用户提交表单时触发谷歌应用脚本(我认为可以通过手动安装触发器 https://developers.google.com/apps-script/guides/triggers/installable )
- 获取表单响应的内容
- 生成包含表单回复内容的 Google 文档
提交后添加了以下内容
我想知道以下问题的答案来实现这一点。
- 如何在提交表单时触发应用脚本
- 如何从触发的脚本中获取表单响应对象
关于问题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对此有一个很好的答案:
- 选择编辑>当前项目的触发器。您会看到一个面板,其中包含消息">未设置触发器"。单击此处立即添加一个。
- 单击链接。
- 在"运行">下,选择要由触发器执行的函数。(在这种情况下,这
getResponse()
。 - 在">事件">下,选择"从电子表格"。
- 从下一个下拉列表中,选择">提交表单时"。
- 单击保存。
注意:为此,需要在电子表格上设置触发器。
获取响应值:
正确设置触发器后,您所需要的只是:
function getResponse(e) {
var response = e.values;
}
在这里,我们使用事件对象来获取表单响应中提交的值。这将返回提交到电子表格的值数组,在我测试的示例中,数组如下所示:
[25/07/2019 10:02:36,选项 1,答案 2,选项 3]
引用:
- 设置
onFormSubmit
触发器 - 可安装触发器
- 事件对象