【问题标题】:Google Script used by multiple User多个用户使用的 Google 脚本
【发布时间】:2020-01-10 04:57:21
【问题描述】:

我有一个 Google 考勤表单,它通过连接到表单的电子表格触发应用脚本。我的问题是,当大约 1200 名学生很可能同时填写表格时,脚本会与数据重叠吗?我看到谷歌开发者的帖子,他们提到将脚本锁定 30 秒 (lock.waitLock(30000); lock.releaseLock();) 使用建议的方法来防止脚本与大约 1200 名学生的数据重叠是否足够?

我无法在实时环境中测试脚本,所以我必须提出这个问题。

【问题讨论】:

  • 我认为您在使用超过 30 个同时用户的 Google Apps 脚本时会遇到问题。
  • 解决办法是什么?我应该增加脚本发布时间吗?
  • Hard Quotas 通常无法绕过。
  • 如果有>30 concurrent calls,我假设你的脚本甚至不会开始执行。所以,不存在Lock救援的问题。
  • 出于测试目的,您可以填写一些表格,然后从脚本 UI 转到 View->Executions 以查看每次执行的持续时间。假设您的脚本很简单,则持续时间将低于一秒。如果是这样,您不太可能在没有锁的情况下执行脚本时遇到问题。学生将如何收到填写出席表格的邀请?每封电子邮件?在这种情况下,您可以先将邀请发送给一半的学生,然后再发送给另一半。

标签: javascript google-apps-script google-forms


【解决方案1】:

我认为会好的。只要您的脚本非常快,您就不会达到任何配额限制。如果你这样做了,症状看起来就像你错过了对 onFormSubmit() 的调用。在这种情况下,您应该创建一些指示,表明您已完成每一行的处理,以便您知道哪些行被遗漏了。

【讨论】:

    【解决方案2】:

    根据Google's documentation,限制为同时执行 30 个。因此,有必要使用 lockservice 来防止多次提交。您还必须考虑脚本运行所需的时间。

    以下是总触发器运行时间的配额:

    • 消费者帐户:90 分钟
    • G Suite 帐号:6 小时

    如果您有 1200 名学生,并且每次执行 600 分钟/10 小时最多需要 30 秒,这超出了这两个限制。您应该测试运行脚本需要多长时间。

    此配额是“总触发器运行时间”,因此如果您在其他电子表格中使用了其他触发器,它们将计入您的总时间。

    【讨论】:

    • 这意味着如果我制作相同但许多(复制)脚本(使用不同的帐户),那么这将完成这项工作吗?如果我有 G Suite 帐户,我还需要多少个额外帐户?
    • 这取决于您的脚本运行需要多长时间。如果您的脚本只需 3 秒即可运行,则只需 1 小时(有 1200 名学生),因此您不需要额外的帐户。此外,使用多个帐户来完成此操作将非常难以管理和维护,因为您将在几个不同的地方提交表单并管理几个不同的脚本。如果可能的话,最好在几天内将表单发布给学生群体,而不是同时发布给所有人(如果脚本运行时间过长)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多