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

问题描述

当响应者发送响应时,我捕获了此事件

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

在这个函数中,我想在目标电子表格的相应行中添加一些信息(谷歌会自动创建这一行)

为了做到这一点,首先我需要找到这一行

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

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

但是这种方法存在并发问题:Serge insas在这里说:https ://stackoverflow.com/a/17751544/2667212

使用这种简单的“策略”存在一些风险,因为当 2 人或更多人同时发送表单时可能会出现并发问题

有没有正确的方法来实现这一目标?

标签: google-apps-scriptgoogle-formsgoogle-apps-script-addon

解决方案


解决方案:

最简单的方法是禁用 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))
}

参考:


推荐阅读