谷歌应用程序脚本时间触发器不工作



我有这样的代码:

const triggerFunctionName = "getScoreEntries";
function onOpen(){
const submenu = SpreadsheetApp.getUi().createMenu("Automatic " + entityBeingToggled).addItem("Turn On", "enableUpdates").addSeparator().addItem("Turn Off", "disableUpdates");
SpreadsheetApp.getUi().createMenu("Score Tools").addSubMenu(submenu).addSeparator().addItem("Update Now", triggerFunctionName).addToUi();
}
function enableUpdates(){
if(PropertiesService.getScriptProperties().getProperty("triggerExists")){
SpreadsheetApp.getActive().toast(entityBeingToggled + " already turned on, by the user: " + PropertiesService.getScriptProperties().getProperty("triggerOwner"), "Error");
return;
}
ScriptApp.getScriptTriggers().forEach(trigger => ScriptApp.deleteTrigger(trigger));
// ScriptApp.newTrigger(triggerFunctionName).timeBased().everyDays(1).atHour(8).create();
ScriptApp.newTrigger(triggerFunctionName).timeBased().everyDays(1).atHour(10).nearMinute(14).create();
SpreadsheetApp.getActive().toast(entityBeingToggled + " enabled successfully.", "Turned On");
PropertiesService.getScriptProperties().setProperty("triggerOwner", Session.getActiveUser().getEmail()); 
PropertiesService.getScriptProperties().setProperty("triggerExists", true); 
}

编辑:

const getScoreEntries = () => {
SpreadsheetApp.getActive().toast("Processing Report...", "Please wait...", 10);
const [entryHeaders, ...entryData] = SpreadsheetApp.getActive().getSheetByName(DATA_ENTRY_SHEETNAME).getDataRange().getValues();
const auditIdHeaderIndex = entryHeaders.indexOf(AUDIT_ID_HEADERNAME);
const headerIndicesToKeep = [auditIdHeaderIndex ,...entryHeaders.map((h, i) => validScoreHeader(h)?i:"no").filter(i => i !== "no")];
const relevantHeaders = entryHeaders.filter((h,i) => headerIndicesToKeep.includes(i)).map(h => h.toString());
const relevantData = entryData.map(row => row.filter((v, i) => headerIndicesToKeep.includes(i))).filter(row => row[relevantHeaders.indexOf(AUDIT_ID_HEADERNAME)].toString().trim());
const normalizedData = relevantData.map(row => row.map((c, i) => {
if(i == auditIdHeaderIndex) return c.toString();
c = c.toString().trim();
if(c === "") return "";
let n = Number(c);
return isNaN(n)?"":n;
}));
const outputData = aggregateAllRows(entryHeaders, entryData);
if(!outputData.length){
SpreadsheetApp.getActive().toast("No data to process...", "Empty", 10);
return
}
let currentReportSheet = SpreadsheetApp.openById(RESULT_SSID).getSheetByName(RESULT_SHEET_NAME);
let nRowsToClear = currentReportSheet.getLastRow() - 1;
if(nRowsToClear > 0) currentReportSheet.getRange(2,1,nRowsToClear, currentReportSheet.getLastColumn()).clearContent();
currentReportSheet.getRange(2,1,outputData.length, outputData[0].length).setValues(outputData);
SpreadsheetApp.getActive().toast("Report Generated Successfully, please see the report sheet for results...", "Success...", 10);
}

所以这里发生的是,我试图触发事件在每天上午10:14运行。然而,它实际上并不运行。它运行的唯一时间是当我点击"update now"时,它会手动运行,但基于时间的触发器不起作用。在应用程序脚本的"触发器"部分,它显示了触发器,但显示它从未被执行。

如果有人对问题可能是什么有任何想法,如果你需要更多的信息来调试,请让我知道。提前谢谢你

我认为您的触发器定义需要与atHour()和nearMinute()后面的everydays()排序,就像这样:

ScriptApp.newTrigger(triggerFunctionName).timeBased().atHour(10).nearMinute(14).everyDays(1).create();