首页 > 解决方案 > 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()); 
}

我怎样才能使这项工作?

标签: google-apps-scriptgoogle-forms

解决方案


您不能以编程方式提交用户响应(抛出“抱歉,此响应已提交。”异常)。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


推荐阅读