小编use*_*534的帖子

Google Apps 脚本和表格:appendRow() 定期覆盖最后一行,而不是在下面追加新行

这是我在 stackoverflow 上的第一个问题。

\n

背景: \n从对appendRow(rowContents)的参考中我了解到此操作是原子的,这意味着处理对工作表最后一行的并发访问并防止潜在的问题。

\n

问题/意外行为: \n但是,我最近意识到,对于将行附加到同一工作表的函数的许多并发实例,最后一行会定期被来自 的新数据覆盖appendRow(rowContents),而不是rowContents作为新行附加到下面最后一排。

\n

过去,我没有遇到appendRow()覆盖工作表上的内容的问题。这似乎是最近才出现的现象。然而,这是我的第一个 GAS 项目,有如此多的并发实例将其进度记录到同一个电子表格/工作表中。

\n

要实现的目标: \n与并发实例的数量无关,脚本应该为每个appendRow() 操作追加一行,而不是覆盖前面的行。

\n

重现问题的小样本:

\n\n

我已经尝试过的:

\n
    \n
  1. 我没有记录到电子表格,而是为每个appendRow()操作发送了一封电子邮件。我可以确认这按预期工作(每次appendRow()操作我都会收到一封电子邮件)
  2. \n
  3. 利用锁服务:只要未达到尝试获取锁的超时时间,每个appendRow()操作都会生成一个新行。一旦达到超时,appendRow()就开始再次覆盖最后一行。
  4. \n
\n

寻求帮助:

\n
    \n
  1. 有人面临同样的问题吗?
  2. \n
  3. 您建议采取哪些解决方法?
  4. \n
  5. 我完全错过了什么吗?
  6. \n
\n

任何想法都受到高度赞赏!

\n

concurrency multithreading triggers google-sheets google-apps-script

6
推荐指数
1
解决办法
2593
查看次数