首页 > 解决方案 > setValues 是否比 setValue 慢?

问题描述

我有一个 Google Doc,其中包含运行多个人贡献的 Google Apps 脚本脚本。onEdit当人们编辑工作表时会触发一个触发器。据我了解,如果有人编辑工作表,则会触发我的onEdit触发功能。

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

为了避免这种情况,我试图让我的代码尽可能高效,因为如果这个onEdit过程花费更少的时间,它就不太可能重叠。为了做到这一点,我试图最小化我的读/写。使用一系列记录器语句,我跟踪了耗时的代码行。我注意到我的setValues()一条线需要将近 6 秒才能运行。在我对其进行调整后,这是一个大数组被发布回工作表。

我的问题:

  1. 一个setValues()电话需要比一个更长的时间setValue()吗?
  2. 小数组的调用是否setValues()setValues()大数组的调用时间短?

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

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

标签: arraysgoogle-apps-scriptgoogle-sheetsread-write

解决方案


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

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

在此处输入图像描述

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

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

在此处输入图像描述

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

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

笔记:


推荐阅读