我想在Google工作表的所有标签页中运行以下脚本(不仅仅是2021年1月),有什么主意吗?
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
//1.Change 'Sheet1' to be matching your sheet name
if (r.getColumn() < 9 && ss.getName()=='Jan 2021') { // 2. If Edit is done in any column before
Column (I) And sheet name is Sheet1 then:
var celladdress ='A'+ r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
}
};
答案 0 :(得分:1)
解决方案1-预先定义的工作表名称列表:
一种解决方案是预定义您要应用onEdit
函数的工作表的工作表名称,并使用includes()检查活动工作表是否为以下工作表之一他们:
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
var sheetNames = ['Sheet1','Jan 2021','Feb 2021'];
if (r.getColumn() < 9 && sheetNames.includes(ss.getName()) ) {
var celladdress ='A'+ r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
}
};
请根据您自己的姓名列表调整['Sheet1','Jan 2021','Feb 2021']
。
解决方案2-所有工作表:
如果要对所有工作表执行onEdit
函数,则只需从if
条件中删除工作表名称:
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
if (r.getColumn() < 9 ) {
var celladdress ='A'+ r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
}
};
解决方案3-运行除以下部分以外的所有工作表:
它基于第一种解决方案的逻辑。您使用!includes
来排除您不希望成为onEdit
函数一部分的预先定义的工作表列表:
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
var sheetNamesExclude = ['Sheet2','Jun 2021','Aug 2021'];
if (r.getColumn() < 9 && !sheetNamesExclude.includes(ss.getName()) ) {
var celladdress ='A'+ r.getRowIndex()
ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy");
}
};