google-apps-script - 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 提供的自动电子表格链接并使用自定义链接。
片段:
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))
}
参考:
推荐阅读
- angular - 在 scrollDispatcher Angular Material 上滚动的方法总是返回 undefined
- r - 试图协调 R Shiny 反应值中的日志记录和 textOutput
- android - 工具栏正在覆盖 Recyclerview
- r - 在R中重复向量化矩阵的最佳方法?
- javascript - 获取异步变量返回空
- java - Java WebLookAndFeel 不显示 JXTable 的列控制弹出菜单
- angular - valueChanges 被触发,但未选择任何内容
- java - 使用 Thymeleaf 的动态模板解析器
- youtube - Youtube Data API - PlaylistItems:使用 API 密钥调用时列表最多返回 20,000 个视频,使用 OAuth 令牌时返回完整视频列表
- c++ - std::set 比较器