Google Apps 脚本 - 如何在 onFormSubmit(Google 表单事件)中获取目标电子表格中的相应记录?

Google Apps Script - How to get corresponding record in destination spreadsheet in onFormSubmit (Google Forms Event)?

我在响应者发送响应时捕获此事件

https://developers.google.com/apps-script/guides/triggers/events#form-submit_4

在此函数中,我想将一些信息添加到目标电子表格中的相应行(Google 自动创建此行)

为此,首先我需要找到这一行

目前我能找到的最佳方法是使用 sheet.getLastRow()

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getlastrow

但是这个方法存在并发问题:Serge insas 在这里说过:

There are a few risks to use that simple "strategy" as there might be concurrency issues when 2 or more people send a form simultaneously

有什么正确的方法可以实现吗?

解决方案:

最简单的方法是禁用 Google 提供的自动电子表格链接并使用自定义链接。

片段:

function formSubmitInForm(e){
 const formResponse = e.response;
 const id = formResponse.getId();
 const timestamp = formResponse.getTimestamp();
 const sheet = SpreadsheetApp.openById(/*SPREADSHEET ID*/)
    .getSheetByName(/*FORM RESPONSE SHEET*/);
 const responses = formResponse.getItemResponses().map(function(itemRes){
    return itemRes.getResponse();
 })
 sheet.appendRow([id,timestamp].concat(responses))
}

参考: