您应该创建一个包含工作表名称的数组,然后检查触发器是否来自这些工作表之一。您可以使用.indexOf()
进行检查,如果找不到该值,它将返回-1
(请注意,这是区分大小写的。)
var sheets = ["CAICO","Natal","Joao Pessoa","Novo1","novo2"];
if (sheets.indexOf(sheet) != -1) {
// do something
}
我也会高度鼓励您改变获取触发单的方式。现在,您正在使用e.source.getActiveSheet()
,它不一定是编辑所在的工作表。例如,如果您在“ Sheet1”中进行编辑,然后快速打开“ Sheet2”,则如果脚本执行缓慢,则.getActiveSheet()
调用实际上可以返回“ Sheet2”。
这种情况不太可能发生,但是您可以通过编写e.range.getSheet()
来轻松避免这种情况。从documentation中,我们知道e.range
代表“已编辑的单元格或单元格范围”。因此,这保证了我们正在考虑的工作表是经过编辑的工作表。
类似地,我在这里可能会误读您的代码,但是我认为您应该对actRng
声明进行类似的更改。
function onEdit(e)
{
var sheets = ["CAICO","novo2"]; // Sheet names that will trigger execution. Case-sensitive.
var sheet = e.range.getSheet();
if (sheets.indexOf(sheet.getName()) != -1) // Check if the edit was made in an applicable sheet
{
var actRng = e.range; // The edited range
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1,1,sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf("Alt") + 1;
var orderCol = headers[0].indexOf("Data") + 1;
if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
{
sheet.getRange(rowIndex,dateCol).setValue(Utilities.formatDate(new Date(),"UTC+8","dd-MM-yyyy"));
}
}
}
,
为什么不只是在函数中添加或?
function onEdit(e)
{
var sheet = e.source.getActiveSheet();
var n = sheet.getName();
if (n == "CAICO" || n == "Natal" || n== "Joao Pessoa" || n == "Novo1" || n== "novo2") //"order data" is the name of the sheet where you want to run this script.
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1,"dd-MM-yyyy"));
}
}
}
本文链接:https://www.f2er.com/3116070.html