首页 > 解决方案 > 由脚本触发器创建的触发器不起作用

问题描述

我需要每天在18:00运行脚本“ABC2”。因此,我创建了脚本触发器“TG”并设置了一个触发器,使其每天在 15:00 到 16:00 之间运行。

在我的工作表中,单元格“B25” 是距离 18:00 的毫秒数

因此,在 15:00 到 16:00 之间,脚本“TG”运行并为脚本“ABC2”创建触发器,使用单元格B25 中的毫秒数精确到 18:00,就像它应该做的那样。

问题是“TG”“ABC2”创建的触发器永远不会运行。

它说“由于未知原因,触发器已停用”

是否无法运行由另一个触发器创建的触发器?请帮帮我

这是我的代码:

这是“TG”

    function TG() {
  var sh = SpreadsheetApp.openById('1_qEpIVDv1n5a8PcX6cXrAxPBzlCmTSXoikgBCVBfQC0').getSheetByName("RESUMO");
  var time = sh.getRange('B25').getValue();
  ScriptApp.newTrigger('ABC2')
  .timeBased()
  .after(time)
  .create();
}

这是“ABC2”

function ABC2() {
  var sh = SpreadsheetApp.openById("1_qEpIVDv1n5a8PcX6cXrAxPBzlCmTSXoikgBCVBfQC0");
  var sh1 = sh.getSheetByName('RESUMO');
  var sh2 = sh.getSheetByName('ACOMPANHAMENTO DIARIO');
  var date = Utilities.formatDate(new Date(), 'GMT-3', 'M/d/yyyy');
  var leo = sh2.createTextFinder(date).findAll().map(r => r.getA1Notation());
  var leo1 = sh1.getRange("B3").getValue();
  var leo2 = sh1.getRange("E3").getValue();
  var leo3 = sh1.getRange("B4").getValue();
  var leo4 = sh1.getRange("E4").getValue();
  var leo5 = sh1.getRange("C3").getValue();
  sh2.getRange(leo).offset(0, 1).setValue(leo1);
  sh2.getRange(leo).offset(0, 2).setValue(leo2);
  sh2.getRange(leo).offset(0, 3).setValue(leo3);
  sh2.getRange(leo).offset(0, 4).setValue(leo4);
  sh2.getRange(leo).offset(0, 5).setValue(leo5);
  var destinationRange = sh2.getRange(sh2.getLastRow() - 1, 8, 1, 3).offset(0, 0, 2);
  sh2.getRange(sh2.getLastRow() - 1, 8, 1, 3).autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}

感谢您的时间!

标签: google-apps-scriptgoogle-sheets

解决方案


从基于触发器的函数创建另一个触发器应该没有问题。您可以通过测试您的脚本并提供一个以毫秒为单位的数字来尝试此操作,以查看它是否会成功创建触发器。

如果您的触发器仍然无法正常运行,我建议您尝试使用另一种触发器方法,而不是after()因为您提到您希望您的脚本“每天正好在 18:00”运行。您可以尝试改用以下方法:

ScriptApp.newTrigger('ABC2').timeBased().atHour(18).everyDays(1)

推荐阅读