我创建了一个触发器,每个工作日晚上 8 点左右运行一个函数,但我不小心运行了该触发器多次,因此该函数被激活了 3 次而不是一次。我该如何解决这个问题?
这是我的函数代码和下面的触发器:
function take1() {
var startDate = new Date();
startDate.setDate(startDate.getDate());
var dateString = Utilities.formatDate(startDate, "GMT-6", "MM/dd/YY");
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Form Responses 1'), true);
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName(dateString);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Form Responses 1'), true);
spreadsheet.getRange('2:40').activate();
spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
spreadsheet.getRange('C12').activate();
spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveSheet().getMaxRows(), 40);
};
function createTriggers() {
var days = \[ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY,
ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY,
ScriptApp.WeekDay.FRIDAY\];
for (var i=0; i\<days.length; i++) {
ScriptApp.newTrigger("take1")
.timeBased().onWeekDay(days\[i\])
.atHour(20).create();
}
}
我发现了一些应该删除触发器的代码,但我不确定如何使其特别适合我的代码:
function deleteTimers() {
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
if (triggers[i].getEventType() == ScriptApp.EventType.CLOCK) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
}
}
function take1(e) {
if (e.day-of-week < 6) {
//put your function here
};
}
function createTriggers() {
ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == "take1").forEach(t => ScriptApp.deleteTrigger(t));
ScriptApp.newTrigger("take1").timeBased().everyDays(1).atHour(20).create();
}