首页 >web前端 >js教程 >为什么我的 Google Apps 脚本这么慢?如何优化'getValues”和'setValues”的使用?

为什么我的 Google Apps 脚本这么慢?如何优化'getValues”和'setValues”的使用?

DDD
DDD原创
2024-12-01 03:05:14747浏览

Why is my Google Apps Script so slow, and how can I optimize `getValues` and `setValues` usage?

由于过度使用 getValues 和 setValues 导致处理时间较长

问题:

代码因过度使用 getValues 和 setValues 方法而受到影响,这可能会严重影响处理时间,特别是对于较大的数据集。

优化技术:

最小化服务调用:

  • 避免不必要的调用 Google Apps 脚本服务。相反,在本地缓存数据并在脚本中对其进行操作。

前瞻性缓存:

  • Google Apps 脚本采用内置外观- 提前缓存以检索可能的数据

最小化读/写操作:

  • 通过检索和操作数组中的数据来批量读写操作。这减少了对服务器的调用次数。

避免交替读/写:

  • 交替读和写命令会破坏前瞻缓存。规划操作以最小化这种交替模式。

使用数组:

  • 使用数组有效地存储数据。使用单个 getValues 调用将所有数据检索到数组中,对其执行操作,然后使用单个 setValues 调用将其写回。

示例:

考虑以下代码片段:

// Slow version: Alternating read and write operations
const sourceRange = SpreadsheetApp.getActiveSheet().getRange("A1:D2");
const targetRange = sourceRange.offset(2, 0);
for (let i = 0; i < sourceRange.getNumRows(); i++) {
  for (let j = 0; j < sourceRange.getNumColumns(); j++) {
    const value = sourceRange.getCell(i + 1, j + 1).getValue();
    targetRange.getCell(i + 1, j + 1).setValue(value);
  }
}

// Fast version: Batch read and write operations
const sourceValues = sourceRange.getValues();
targetRange.setValues(sourceValues);

通过批量读取和写入操作,第二个代码片段显着减少了对服务的调用次数并缩短了处理时间。

以上是为什么我的 Google Apps 脚本这么慢?如何优化'getValues”和'setValues”的使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn