我在Google表格中使用了自动时间戳记脚本。在特定单元格中输入内容时,脚本将在特定单元格中自动添加时间戳。 但是问题是我想对Google表格的多个标签中的多个实例使用相同的脚本。但这仅适用于一审。
我想添加新闻标签(我已经知道那是有限的页面数)。其他名称是:“ Natal”,“ Joao Pessoa”,“ Novo1”,“ novo2”
function onEdit(e)
{
var sheet = e.source.getActiveSheet();
if (sheet.getName() == "CAICO") //"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, 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"));
}
}
}
答案 0 :(得分:2)
您应该创建一个包含工作表名称的数组,然后检查触发器是否来自这些工作表之一。您可以使用.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", "Natal", "Joao Pessoa", "Novo1", "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, 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"));
}
}
}
答案 1 :(得分:0)
为什么不只是在函数中添加或?
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, 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"));
}
}
}