如何为通过 Google 脚本创建的自动向下填充中添加的每个公式创建 2 秒暂停?

How create a 2-second pause for each formula added in a Auto Fill Down created via Google Script?

我有一个自定义函数,可以从 table.

的单元格中的值向 Telegram 发送消息

在同时创建自动向下填充的情况下,Telegram 警告说当有许多不同的单元格具有值时它已达到同​​时发送限制,因此我需要找到一种方法为每个公式添加 2 秒的暂停添加到单元格中,不创建发送队列。

我的脚本目前看起来像这样:

  var sheetName = "Sheet4";
  var sss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = sss.getSheetByName(sheetName);
  sheet.getRange('AB1').setFormula('=IF(Z1="","",EnviarTelegram($AA,$AA,URLredirect(U1),Z1))');
  var lr = sheet.getLastRow();
  var fillDownRange = sheet.getRange(1, 28, lr);
  sheet.getRange('AB1').copyTo(fillDownRange);

Example of my need:

AB1
中添加的公式 =IF(Z1="","",EnviarTelegram($AA,$AA,URLredirect(U1),Z1))

2秒停顿

AB2
中添加的公式 =IF(Z2="","",EnviarTelegram($AA,$AA,URLredirect(U2),Z2))

2秒停顿

AB3
中添加的公式 =IF(Z3="","",EnviarTelegram($AA,$AA,URLredirect(U3),Z3))

等等...

我不会为您构建整个脚本,因为如果我这样做,您将永远无法自己学习如何构建。但这是基本思路

const formulas=['formula1','formula2',....];
const ranges=['range1','range2',....];//you will have to figure out how to do this
formulas.forEach((f,i)=>{
  ranges[i].setFormula(f);
  spreadsheetApp.flush();
  Utilities.sleep(delay in milliseconds);
});

很明显,对于 运行 这样一个具有许多数组元素的函数,您需要了解脚本时间的配额限制。不打算成为一个确切的答案。

添加暂停以使用自定义函数添加公式不是一个好主意,因为这些公式将在电子表格打开时以及自定义函数参数更改时重新计算。

相反,创建一个调用自定义函数的函数,为其提供相应的参数。