triggers - 使用 Google Apps 脚本编辑时延迟执行

标签 triggers google-apps-script google-sheets google-sheets-api delayed-execution

我有一个相对较大的电子表格(300 行,30 列),我根据电子表格中的值对其进行着色。我只使用两次访问来最少地访问 API:

  • getValues(...) 用于访问数据范围的所有值。
  • setBackgrounds(...) 设置数据范围的所有背景。

运行时间大约为半秒或更短。但是,如果我使用 onEdit() 让它在每次编辑时运行,它就会受到阻碍,但我也不希望它在我不编辑它时定期更新,看起来很浪费。有没有一个好的方法可以让脚本以“延迟”的方式运行,在我编辑时定期更新?

最佳答案

首先,我想说您应该查看 Google 表格的条件格式(表格中的“格式”>“条件格式”菜单项)——您也许可以在完全不涉及 Apps 脚本的情况下完成您需要的大部分操作。

如果失败,您可以设置 regular time-based trigger检查编辑并适当更改背景。您可以使用单独的 onEdit() 触发器来支持此触发器,以记录内部更改的内容。流程如下:

  1. 发生更改并触发 onEdit()
  2. onEdit() 触发器仅将更改的单元格位置记录到局部变量或缓存
  3. 基于时间的触发器每分钟/小时/每当触发
  4. 基于时间的触发器会检查缓存中是否有已编辑的单元格,更改其背景,然后从缓存中清除它们

也就是说,根据您的工作流程,这种方法可能并不比简单地使用时间触发器直接更改单元格好多少。

关于triggers - 使用 Google Apps 脚本编辑时延迟执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450158/

相关文章:

google-apps-script - 谷歌脚本: multiple doPost in one project

javascript - Google 电子表格脚本不断写入空字符串

google-sheets - 如何获得最后 3 个结果的滚动总和,其中键值在谷歌电子表格的一列或另一列中

mysql - 我想拆分逗号分隔值,然后将每个值插入到 mysql 存储过程中的另一个表中

MySQL - 在另一个触发器之后执行一个触发器

wpf - TreeView.IsSelected 触发器无法正常工作

javascript - 将谷歌表格中的单选按钮填充到 HTML 中

google-apps-script - 使用 onChange 检测注释更改

google-sheets - Google Spreadsheet - 不计算带空格的数字

mysql - 在一个触发器中更新 2 个表