模式设置为让脚本在每 1 分钟触发器内每 2 分钟仅进行一次调用.(谷歌应用脚本)


function All() {
var ss = SpreadsheetApp.getActive();
ss.getRange('Página1!A6').setFormula('=IF(ISEVEN(MINUTE(NOW())),"Ok","Error")')
ss.getRange('Página1!A6').copyTo(ss.getRange('Página1!A6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
if (ss.getSheetByName('Página1').getRange("A6").getValues()[0][0]=="Ok"){
//History
ss.getRange('Página1!D1').setFormula('=IFERROR(FILTER({C:C;H1},{C:C;H1}<>""))');
ss.getRange('Página1!D1:D').copyTo(ss.getRange('Página1!C1'), 
}
}

Google 每 1 分钟、5 分钟、10 分钟、15 分钟和 30 分钟都有一次触发器。

对于这个模型,我使用 1 分钟触发器!

为了绕过这一点并能够每 2 分钟而不是 1 分钟打开它(因为它在电子表格中很重要并且偶尔会产生错误(,为了转移这一点,我创建了这个模型,它分析当前时间的分钟是奇数还是偶数。如果偶数,它会激活脚本的其余部分,如果奇数,它会在不执行任何其他操作的情况下结束。

我想知道我是否可以做同样的事情,但不要将函数扔到单元格中,而是复制值,以便公式NOW()不会一直更新等等......相同的步骤,但直接在脚本中,无需移动电子表格进行不必要的调用。

如果也可以这样做,将脚本设置为每 3 分钟工作一次,而不是像我设法那样工作 2 分钟。

您可以使用应用程序脚本替代方法,而不是使用带有公式的工作表来确定分钟是偶数还是奇数。

我正在使用 %(余数(运算符来获取除以 2 的提醒。如果它是零,则数字是奇数。

MINUTE(NOW())的等效值是通过Javascript Datenew Date().getMinutes()实现

function myFunction() {
if (new Date().getMinutes()%2==0) { //If the minute is odd.
//Your code here
} //No need for else.  
}

无需修改电子表格,而是使用属性服务来存储上次运行脚本的时间。请记住,属性服务仅存储字符串,因此您必须将 Date 对象转换为字符串,反之亦然。

相关

  • 如何修改触发器,使其在编辑时发送电子邮件,但不会那么快?

最新更新