В настоящее время моя функция работает. Не выдает никаких синтаксических ошибок, и с помощью отладки и ведения журнала я определил, что он достигает моих операторов возврата и функций, как и ожидалось. Основная проблема заключается в том, что он зависает после достижения оператора, пока в конечном итоге не выдаст ошибку из-за превышения максимального времени выполнения.
Я не понимаю, почему именно это не работает, поскольку это очень простая процедура. Вот код:
Код: Выделить всё
// region Logging:
const logSeperator = "--------------------------------\n";
// endregion
//region Constants
const VacationDays = [
new Date("1/1/25"),
new Date("1/20/25"),
new Date("2/17/25"),
new Date("5/26/25"),
new Date("6/19/25"),
new Date("7/4/25"),
new Date("7/4/25"),
new Date("9/1/25"),
new Date("10/13/25"),
new Date("11/11/25"),
new Date("11/27/25"),
new Date("12/25/25"),
new Date("12/26/25"),
new Date("12/27/25"),
new Date("12/31/25"),
];
// endregion
function tryReinterpretAsDate(targetObject){
console.log(Object.prototype.toString.call(targetObject))
if (Object.prototype.toString.call(targetObject) == "[object Date]"){
return new Date(targetObject);
}
return targetObject;
}
function ISWORKDAY(targetCell = 'A11') {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName("Sheet1");
console.log('Target Date Cell: %s', targetCell);
const _range = sheet.getRange(targetCell);
let val = tryReinterpretAsDate(_range.getValue());
const isDate = val instanceof Date;
console.log(`${logSeperator}Target Cell \nType: ${isDate} \nValue: ${val}\n${logSeperator}`);
if(isDate){
console.log("Target value is Date");
const dayOfWeek = val.getDay();
if (VacationDays.includes(val) || [0, 6].includes(dayOfWeek)){
console.log("Target value is a non work day... Returning false");
return "false";
};
console.log("Target value is a work day... Returning true");
return "true";
}
return "false"
};
Код: Выделить всё
3:06:27 AM Notice Execution started
3:06:27 AM Info Target Date Cell: A11
3:06:27 AM Info [object Date]
3:06:27 AM Info
--------------------------------
Target Cell
Type: true
Value: Sun Jun 15 2025 00:00:00 GMT-0400 (Eastern Daylight Time)
--------------------------------
3:06:27 AM Info Target value is Date
3:06:27 AM Info Target value is a non work day... Returning false
3:12:27 AM Error Exceeded maximum execution time
Подробнее здесь: https://stackoverflow.com/questions/798 ... -statement
Мобильная версия