GAS FormApp添加数据以形成表单响应

问题描述 投票:0回答:1

我正在尝试在其响应中添加Google表单的标题,以便在用户提交表单时将所述数据写入电子表格。

我相信我需要使用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-script google-form
1个回答
0
投票

您无法以编程方式提交用户回复(引发“抱歉,此回复已提交。”例外)。 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

© www.soinside.com 2019 - 2024. All rights reserved.