Google 表单提交事件:在何处放置事件处理程序(Sheet 触发器与表单触发器)以将 EditResponseUrl 保存在行中

Google Form Submit Event: Where to place the Event Handler (Sheet trigger vs Form trigger) to save EditResponseUrl in the row

您能否解释一下如何使用以及使用哪个触发器(将我的脚本放置在何处)- 表单中的表单提交事件,或(响应)电子表格中的表单提交事件。 我想使用什么(这在表单脚本中可用):

var timestamp = event.response.getTimestamp();

var responseUniqueId = event.response.getId();
//The same:
//var responseURL = formResponse.getEditResponseUrl();  
//var responseUniqueId = responseURL.split('edit2=').pop();  

这在电子表格脚本中可用:

event.range.getRow()

我想要一行并在其中添加 responseUniqueId。

我建议将它添加到电子表格中,除了我通常在其中添加脚本外,没有其他原因。以下代码将表单响应 ID 添加到每个提交的表单中:

function getResponseId() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('yourSheetName');
  var formUrl = sheet.getFormUrl();

  // Open the form to access the responses
  var responses = FormApp.openByUrl(formUrl).getResponses();

  // add the last form response ID to the last row in the sheet
  sheet.getRange(sheet.getLastRow(), 3).setValue(responses[responses.length - 1].getId());

}

除此代码外,您还需要通过脚本编辑器中的 GUI 添加 On Form Submit 触发器。