Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script I是否有一种经过验证的方法可以通过自动触发器检查/安装以及多个电子表格之间的多个用户来处理更新间隔?_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Google apps script I是否有一种经过验证的方法可以通过自动触发器检查/安装以及多个电子表格之间的多个用户来处理更新间隔?

Google apps script I是否有一种经过验证的方法可以通过自动触发器检查/安装以及多个电子表格之间的多个用户来处理更新间隔?,google-apps-script,google-sheets,triggers,Google Apps Script,Google Sheets,Triggers,我正在开发一个插件,它需要按照用户指定的时间间隔(从每小时一次到每年一次)更新电子表格-是否有一种智能的、经验证的方法来处理自动触发器检查/安装和多个电子表格之间的多个用户 据我所知,触发器是每个用户单独安装的——有人能揭示出在以下情况下插件的时间驱动触发器是如何工作的吗 检查触发器是否已安装不会“查看”其他用户是否已安装,也不会对其进行操作(例如,在不再需要时删除其他人的触发器)。有什么办法可以应付吗?50个用户每小时安装一次触发器并不理想 安装了插件的多个电子表格:触发器是否会在所有电子表

我正在开发一个插件,它需要按照用户指定的时间间隔(从每小时一次到每年一次)更新电子表格-是否有一种智能的、经验证的方法来处理自动触发器检查/安装和多个电子表格之间的多个用户

据我所知,触发器是每个用户单独安装的——有人能揭示出在以下情况下插件的时间驱动触发器是如何工作的吗

  • 检查触发器是否已安装不会“查看”其他用户是否已安装,也不会对其进行操作(例如,在不再需要时删除其他人的触发器)。有什么办法可以应付吗?50个用户每小时安装一次触发器并不理想

  • 安装了插件的多个电子表格:触发器是否会在所有电子表格中同时运行被调用的函数,还是每个电子表格都需要单独的触发器?干测试似乎表明,触发器需要在每张纸上单独设置,不过如果有人能够通过已经在线的附加组件确认他们的体验,那就太好了

  • 为了控制潜在的混乱,我正在考虑向计划的更新实例添加“last updated”属性,并让触发函数比较该时间与当前时间之间的时间差,但是,它仍然返回到每小时运行一次函数,乘以用户数量。

    触发器是否会同时在所有用户中运行调用的函数,还是每个工作表都需要单独的触发器

    按照[用户]的[表格|文档|表格]安装(准确地说,是每个脚本项目)。由于它们对于每个用户都是隔离的,因此它们也会针对每个用户被触发(而不是简单的触发器)

    可安装onOpen | OneEdit | onChange

    不过,在某些情况下,这可能不像《官方指南》中的“可安装触发器”一节那么简单。尽管一般情况仍然成立-即使其他帐户将触发它,触发器将针对创建者的帐户运行,其中包括配额和所有与用户相关的内容,因此要格外小心

    有什么办法可以应付吗

    虽然[installable]触发器不是跨用户共享的,但有些资源是在用户之间共享的,因此您至少有两种可能的方法来处理并发触发器触发:

  • 首选方式:。它是专门为避免竞争条件而设计的,例如您的情况:只需等待(或重新安排,如果操作可能需要5分钟以上),直到可以取消锁定(请注意,您需要使用脚本或文档锁定)
  • 回退方式:如果您打算让用户同时与UI交互,锁将失败(根据设计)。您使用
    PropertiesService
    的想法是正确的(我假设这就是您所说的“添加属性”),但请注意,读/写操作会受到影响。
    我最近回答了一个类似的问题-它的
    LockService
    行为与
    PropertiesService
    (但再次注意配额)
  • 注释

    您必须了解触发器并对此做出解释(参考答案中包含了一个更简单的用于检查时间戳的解决方案)。

    触发器是否会同时在所有触发器中运行调用的函数,或者每个工作表需要单独的触发器

    按照[用户]的[表格|文档|表格]安装(准确地说,是每个脚本项目)。由于它们对于每个用户都是隔离的,因此它们也会针对每个用户被触发(而不是简单的触发器)

    可安装onOpen | OneEdit | onChange

    不过,在某些情况下,这可能不像《官方指南》中的“可安装触发器”一节那么简单。尽管一般情况仍然成立-即使其他帐户将触发它,触发器将针对创建者的帐户运行,其中包括配额和所有与用户相关的内容,因此要格外小心

    有什么办法可以应付吗

    虽然[installable]触发器不是跨用户共享的,但有些资源是在用户之间共享的,因此您至少有两种可能的方法来处理并发触发器触发:

  • 首选方式:。它是专门为避免竞争条件而设计的,例如您的情况:只需等待(或重新安排,如果操作可能需要5分钟以上),直到可以取消锁定(请注意,您需要使用脚本或文档锁定)
  • 回退方式:如果您打算让用户同时与UI交互,锁将失败(根据设计)。您使用
    PropertiesService
    的想法是正确的(我假设这就是您所说的“添加属性”),但请注意,读/写操作会受到影响。
    我最近回答了一个类似的问题-它的
    LockService
    行为与
    PropertiesService
    (但再次注意配额)
  • 注释

    您必须了解触发器并对此做出解释(参考答案还包括一个更简单的用于检查时间戳的解决方案)。

    欢迎使用。这个问题主要是基于观点的,需要更多的关注,它缺少中建议的对您的搜索/研究工作的简要描述。请将问题缩小范围,使其具体化和可回答性。欢迎访问。这个问题主要是基于观点的,需要更多的关注,它缺少中建议的对您的搜索/研究工作的简要描述。请缩小问题的范围,使其具体和可回答。