提交后立即编辑表单回复

Edit Form Responses as soon as it is submitted

假设我有一个 Google 表单,其中只有一个项目:一个简短的回答项目。提交表格后,我想要一个脚本,以便它更改响应。例如,无论用户输入什么问题,我都想要一个脚本将其更改为 "foo"。表单回复 Google Sheet 也应显示 "foo" 作为回复。

我知道它涉及类似 ScriptApp.newTrigger("edit_response").forForm(form).onFormSubmit().create(); 的内容,其中 form = FormApp.getActiveForm()edit_response 是一个接受事件 e 的函数。但是我好像找不到可以修改表单回复的方法...

Google 表单内的表单响应 不能 使用 Apps 脚本进行编辑。保存到电子表格的回复可以更改,但无法更改表单中的现有回复。可以使用代码删除表单响应,但不能使用任何 Apps 脚本方法进行编辑。

您可以手动设置表单提交触发器。没有必要从代码创建触发器,除非你正在做一些事情,比如用代码创建新的表单,并自动分发它们。或者让人们在表单中安装附加组件。

表单回复始终写入表单。您还可以将电子表格设置为响应目标。在这种情况下,表单答案将同时保存到表单和电子表格中。在将数据写入表单之前,您无法拦截数据。但是你可以在它写完后立即更改它。

用作表单提交触发器的函数可以接收带有表单数据的 JavaScript 对象。用于事件对象的变量名通常是字母"e",因为字母"e"是单词"Event."中的第一个字符,但是变量名可以是任何东西。

function myOnFormSubmitFunc(e) {};

表单提交触发器可以在表单、Sheet 或两者中。 Sheet 的表单提交对象与表单的不同。例如,使用 Sheet On Form Submit 对象,您可以直接获取一个值数组。

var arrayOfValues = e.values;

Apps Script Documentation - Sheets Form Submit events

有一个FormResponse class:

Apps Script Documentation - FormResponse

但它不能编辑表单中现有的表单响应。