我写的脚本有问题,问题的解决方案是锁定服务,以避免与表单提交冲突。由于我不知道这将是一个问题,我不得不回去重新访问旧脚本。
我的脚本有一些不同的功能,它将数据从一个函数传递到另一个函数。最终它将数据写入工作表,创建PDF,可以通过电子邮件发送并将PDF存储到谷歌驱动器中的文件夹。
以下是我的意思的简短例子
function firstFunction() {
//Do stuff, return something
return something;
secondFunction(something);
}
function secondFunction(something) {
// Do stuff, return test
thirdFunction(test);
}
function thirdFunction(test) {
// Do stuff, return that
return that;
fourthFunction(that);
}
function fourthFunction(that){
// finish doing stuff. Write data
}
我还有一个单独的脚本,可以调用第一个脚本并遍历数据列表,批量生成PDF。
我担心如果有两个人同时调用脚本,我会再次遇到问题。
鉴于我给出的示例脚本,我是否必须在每个函数上使用LockService?或者我可以在第一个函数中声明锁定并在最后一个函数中释放它。
我也很好奇第二个脚本会如何调用前几次。在这个中添加锁定服务是否足够,或者我是否也必须将它添加到第二个?
提前致谢。
以下编辑
我记得我在Code Review上发布了真实的代码以获取建议,而且我得到了一些!! Code Review Post
答案 0 :(得分:1)
我认为在这种情况下你根本不需要锁服务。
在Lock Service文档中,它指出:
[锁定服务]阻止对代码段的并发访问。当您有多个用户或进程修改共享资源并希望防止冲突时,这可能很有用。 (文件:https://developers.google.com/apps-script/reference/lock/lock-service#getScriptLock%28%29)
或[类锁定]对回调和触发器特别有用,其中用户操作可能会导致对共享资源的更改,并且您希望确保不是冲突。 (文件:https://developers.google.com/apps-script/reference/lock/lock#tryLock%28Integer%29)
现在,在阅读了您link to in your edit的脚本代码之后,我没有看到脚本正在写入的共享资源。所以我得出结论,不需要锁定。 (编辑:在第二次阅读时,我看到脚本正在写一张纸,共享资源。所以你的锁只能进入那个功能。)
我会将此点交叉发布到Google Apps Script Plus社区https://plus.google.com/communities/102471985047225101769,因为那里有专家可以确认。