我是 Google 脚本的新手,所以如果这个问题已经得到解答,我深表歉意。
我有一个包含多个工作表的电子表格,其中一些工作表上有一个状态列。
使用我已经发现的代码,我可以根据状态列中单元格中的值设置整个行颜色。
我遇到的问题是我只能让代码在一张纸上运行。
以下代码(由 ScampMichael 编写)的工作方式与我想要根据“状态”列中的值更新整行一样,但我无法让它在同一工作簿中的多个工作表(具有不同名称)上工作。
我已尝试将代码作为单独的脚本,并编辑工作表名称和列号,以便每个工作表都引用一个单独的工作表,但仍然只更新一张工作表。
请有人告诉我如何编辑此代码或如何复制它以便跨多个工作表工作?
function onEdit(e) {
var statusCol = 2; // replace with the column index of Status column A=1,B=2,etc
var sheetName = "Services"; // replace with actual name of sheet containing Status
var cell = e.source.getActiveCell();
var sheet = cell.getSheet();
if(cell.getColumnIndex() != statusCol || sheet.getName() != sheetName) return;
var row = cell.getRowIndex();
var status = cell.getValue();
// change colors to meet your needs
var color;
switch(status ) {
case "Down":
color = "red";
break;
case "":
color = "White";
break;
case "Up":
color = "green";
break;
}
sheet.getRange(row + ":" + row ).setBackgroundColor(color);
}
谢谢。
电子表格只能有一个 onEdit() 函数。因此,对任何工作表所做的编辑都必须在同一函数中处理。
一种方法是不对 statusCol 的值进行硬编码,而是在运行时获取它。
在许多可能的方法中,我将在这里给出两种
更简单的方法
var statusCols = { 'Sheet1' : 1,
'Sheet2' : 2,
'Sheet3' : 7 //etc.
};
function onEdit(e){
var cell = e.source.getActiveCell();
var sheet = cell.getSheet();
var sheetName = sheet.getName();
var statusCol = statusCols[sheetName];
/* Whatever code you already have */
}
第二种方法更加通用
function onEdit(e){
var cell = e.source.getActiveCell();
var sheet = cell.getSheet();
var headers= sheet.getDataRange().getValues()[0]; //Assuming headers on the first row only
var statusCol = headers.indexOf('Status') + 1 ; // Replace Status by the actual column header
/* Your existing code here */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)