google-apps-script - 通过使用队列管理传入的表单数据来管理并发问题?
问题描述
注意:我已经在使用onFormSubmit
,这就是问题所在。
我已经构建了一个脚本来管理共享谷歌表中的一些数据。在大多数情况下,它按预期工作,但是当一次提交多个表单时,我遇到了一个问题,即对最后一行的引用有时会重叠并导致 2 行数据引用另一张表中的重复行。我希望找到一种方法,该方法允许传入表单数据的队列。
我最近了解到存在锁定服务,但是我不完全确定它是否可以按照我想要的方式使用。我不是 100% 确定它应该如何实现,或者我需要使用几个锁服务中的哪一个。
如果谷歌脚本有某种队列系统来获取传入的表单数据,谁能指出我正确的方向?
这里的参考是一个屏幕截图,显示由于此并发问题,2 行数据如何引用另一个工作表中的同一单元格。
这是我的代码:
function AM2(e) {
var form_name = "Form Responses 1";
var open_name = "OPEN";
var workbook = SpreadsheetApp.getActiveSpreadsheet();
var form_ws = workbook.getSheetByName(form_name);
var open_ws = workbook.getSheetByName(open_name);
var frng = form_ws.getRange("A1:A").getValues();
var frow = frng.filter(String).length;
var gid= form_ws.getSheetId().toString();
var gid_and_data = gid + '&range=D' + frow + '", "' + e.values[2]
var link_var = '=HYPERLINK("https://docs.google.com/spreadsheets/d/sheet_address_redacted_for_post/edit#gid=' + gid_and_data +'")'
open_ws.appendRow(['NEW',e.values[1],'',link_var,e.values[4]]);
var rng = open_ws.getRange("A1:A").getValues();
var row = rng.filter(String).length;
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['NEW', 'OPEN', 'COMPLETE', 'PENDING'], true).build();
open_ws.getRange(row, 1).setDataValidation(rule);
}
解决方案
推荐阅读
- javascript - 点击后启动自动完成
- express - Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 1 Error with React, Babel and Webpack
- reactjs - GraphQL 内联片段检查是否存在,然后在 .map 中输出
- javafx - Javafx 应用程序在 Android 手机上运行时崩溃
- spring-boot - 如何在 Grails 4 中设置日志级别
- visual-studio-code - Visual Studio 代码窗口菜单未列出打开的文档
- for-loop - 在 findstr 输出中插入新的换行符
- reactjs - 在 redux 操作创建器中使用 axios 获取 404(未找到)错误,以对 expressJs 后端进行 api 调用
- c++ - 尝试在解决方案中使用动态库时未解析的外部符号
- javascript - 如何在fabricjs画布内添加没有重叠的随机圆圈