当前情况
我有一个Web应用,其网址示例如下所示
https://script.google.com/a/domain.com/macros/s/Adlksjflf09_LEg8kdlf9/exec?ID=1
此网络应用程序具有doGet(e)
函数,可将其重定向到Google表单URL。使用上面的示例,看起来像这样
https://docs.google.com/forms/d/e/1FAIpQLSfi8jWUK2N4y03N4YYJ9p8Cyr2x06b1C6WgS_TcV98WM_ACtQ/viewform?ID=1
此ID字段未预先填写Google表单中的任何问题。本质上,它是用来保存信息的。
当用户提交表单响应时,我将合并查询参数中的信息以及表单响应,并将其作为有效内容发送到Webhook URL。
我该如何使用CacheService
。当用户打开第一个URL时,doGet(e)
函数将e.queryString作为Hash
存储在缓存中。然后,当用户提交表单时,我可以从缓存中获取信息,并将其与formResponse组合。
我现在遇到的问题与并发性有关。在某些情况下,会有多个用户打开第一个URL。这导致Hash['queryString']
在缓存中被覆盖,这不是我想要的。
实际问题
由于我当前的解决方案不支持并发,是否有一种方法可以从表单的onFormSubmit中获取查询参数并将其与表单响应结合起来而无需使用CacheService
?
据我了解,onFormSubmit
触发器没有e
(事件变量),我无法执行类似e.queryString的操作来获取查询参数。我可能是错的,需要有人确认。
OR
是否可以缓存信息,以便我可以跟踪谁的查询字符串是谁,然后在提交表单时提取适当的信息。