将多个Sheetname传递到Array Google应用程序脚本中,但时间戳函数不起作用



这个脚本中有我遗漏的东西吗?当sheet_name的变量设置为一张纸时,它工作得很好,当我将sheet_name更改为数组["sheet1"、"sheet2"、"sheet3"、"heet4"]时,它不会触发(编辑时(

function onEdit(e) {
var COLUMN_TO_CHECK = [1,4,5]; // The columns to check if something is entered. (Columns A & B)
var DATE_TIME_COLUMN = 13; // Where you want the date time stamp (Column C)
var SHEET_NAME = ["User1", "User2", "User3"]; // Sheet you are working on
var editedCell = e.range;
var editedSheet = e.range.getSheet();
if (editedSheet.getName() === SHEET_NAME) {
if (COLUMN_TO_CHECK.indexOf(editedCell.getColumn()) != -1) {
var allFilled = true;
var editedRow = editedCell.getRow();
for (var i in COLUMN_TO_CHECK) {
if (editedSheet.getRange(editedRow, COLUMN_TO_CHECK[i]).getValue() == "") {
allFilled = false;
}
}
if (allFilled) {
editedSheet.getRange(editedRow,DATE_TIME_COLUMN).setValue(new Date());
}
}
}
}

editedSheet.getName()是一个字符串。SHEET_NAME是一个数组。这些永远不会相等(===(。

使用SHEET_NAME.indexOf(editedSheet) != -1,因为如果Array.indexOf()不存在,它将返回-1

更新代码(将SHEET_NAME复数为SHEET_NAMES(:

function onEdit(e) {
var COLUMN_TO_CHECK = [1,4,5]; // The columns to check if something is entered. (Columns A & B)
var DATE_TIME_COLUMN = 13; // Where you want the date time stamp (Column C)
var SHEET_NAMES = ["User1", "User2", "User3"]; // Sheet you are working on
var editedCell = e.range;
var editedSheet = e.range.getSheet();
if (SHEET_NAMES.indexOf(editedSheet.getName()) != -1) {
if (COLUMN_TO_CHECK.indexOf(editedCell.getColumn()) != -1) {
var allFilled = true;
var editedRow = editedCell.getRow();
for (var i in COLUMN_TO_CHECK) {
if (editedSheet.getRange(editedRow, COLUMN_TO_CHECK[i]).getValue() == "") {
allFilled = false;
}
}
if (allFilled) {
editedSheet.getRange(editedRow,DATE_TIME_COLUMN).setValue(new Date());
}
}
}
}