setValues 比 setValue 慢吗?

LAN*_*NCE 0 arrays read-write google-sheets google-apps-script

我有一个 Google 文档,其中有多个人参与运行的 Google Apps 脚本脚本。onEdit当人们编辑工作表时会触发一个触发器。据我了解,如果一个人编辑该工作表,就会触发我的onEdit触发功能。

如果第二个人在第一次完成处理之前编辑工作表onEdit,那么它会停止第一个实例,然后onEdit开始第二个实例,而不会完成第一个实例。

为了避免这种情况,我试图使我的代码尽可能高效,理论是如果该onEdit过程花费的时间较少,则重叠的可能性较小。为了实现这一点,我尝试尽量减少读/写。使用一系列记录器语句,我跟踪了耗时的代码行。我注意到我的其中一条setValues()线需要将近 6 秒才能运行。这是一个大数组,在我对其进行调整后被发布回工作表。

我的问题:

  1. 通话时间是否setValues()比通话时间长setValue()
  2. setValues()调用小数组是否比setValues()调用大数组花费的时间更少?

我知道一个命令setValues()会比 1000 个命令快得多setValue()

我原以为无论大小如何,一次写入工作表应该花费大约相同的时间。有什么办法可以尽量减少这个时间吗?

Tan*_*ike 6

Q1:setValues()a 比 a 需要更长的时间吗setValue()

A1: 没有。关于这一点,从下面的实验结果就可以看出。

在此输入图像描述

Q2:setValues()小数组的调用时间是否比setValues()大数组的调用时间短?

A2:是的。关于这一点,从下面的实验结果就可以看出。

在此输入图像描述

问题 3:我原以为无论大小如何,对工作表的一次写入应该花费大约相同的时间。有什么办法可以尽量减少这个时间吗?

A3:当您想减少放入更多值的过程成本时,使用 Sheets API 怎么样?关于这一点,大家可以从“A2”图中看到。

笔记: