google-apps-script - GAS FormApp 将数据添加到表单响应中
问题描述
我正在尝试将谷歌表单的标题添加到它的响应中,以便在用户提交表单时将所述数据写入电子表格。
我相信我需要使用withItemResponse(response)
到目前为止,这就是我想出的。
function myFunction() {
var form = FormApp.getActiveForm();
var title = form.getTitle();
var formResponse = form.getResponses();
var items = form.getItems();
formResponse.withItemResponse(items[5].asTextItem().createResponse(title).submit());
}
我怎样才能使这项工作?
解决方案
您不能以编程方式提交用户响应(抛出“抱歉,此响应已提交。”异常)。submit() [1] 函数用于尚未提交的响应(以编程方式进行)。
但是,您可以为目标电子表格 [2][3](链接到表单的那个)创建一个表单提交触发器,并从表单中获取标题以将其插入到您希望的列中(我使用了第 7 列) :
function onUserFormSubmit(e) {
//Get Form from formID and title
var form = FormApp.openById("[FORM-ID]");
var title = form.getTitle();
//Row where user response is inserted
var responseRow = e.range.getRow();
//Column where you want the title to be
var titleColumn = 7;
//Get responses sheet and insert the title in the given cell
var sheet = SpreadsheetApp.openById("[SPREADSHEET-ID]");
sheet.getSheetByName("Form responses 1").getRange(responseRow, titleColumn).setValue(title);
}
function createTrigger() {
var sheet = SpreadsheetApp.openById("[SPREADSHEET-ID]");
ScriptApp.newTrigger("onUserFormSubmit")
.forSpreadsheet(sheet)
.onFormSubmit()
.create();
}
[1] https://developers.google.com/apps-script/reference/forms/form-response#submit()
[2] https://developers.google.com/apps-script/guides/triggers/installable
[3] https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
推荐阅读
- spring - 为什么在类中没有返回 discriminatorColumn dtype
- azure - Azure eventhub 有回调方法吗?
- drake - 在 Drake 中生成和操作多个模型到 iiwa arm MeshCat 仿真中
- reactjs - React 使用 Google 登录未重定向到仪表板
- python - 无限迭代器
- postgresql - Postgres - 将国际原子时间转换为 UTC 时间(在 SQL 函数体中使用 IF 循环)
- sql - 如何按 SDO_GEOMETRY 数据类型分组
- django - 如何使用 save_to_database() 跳过一些在 django-excel 中有错误的行
- c++ - OpenCascade 未定义的函数参考
- tensorflow - 在 Keras 中,ResNet50 有一个奇怪的模式