我已经整理了一个Google电子表格脚本,该脚本会更改输入国家/地区代码的行的特定国家/地区单元格的背景颜色。我的ELSE语句将BG颜色返回到白色,因此如果一个单元格没有国家代码,它的BG仍然是白色。
我正在使用toString()。match,所以我可以在一个单元格中包含输入,例如:“AU,BEfr,BEnl”,并单独突出显示所有单元格。
在我开始添加更多行之前,它的工作时间很长。也许我偶然删掉了一些东西?
正确的国家/地区单元格突出显示1秒钟,然后立即返回白色背景。
我在这里缺少什么?
非常感谢!
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('R186');
var values1Rule1 = s.getRange('Locales').getValues();
var color1 = '#ADD8E6';
for (var row in values1Rule1) {
for (var col in values1Rule1[row]) {
if(values1Rule1[row][col].toString().match("AR") == "AR")
s.getRange(s.getRange('AR').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
if(values1Rule1[row][col].toString().match("AU") == "AU")
s.getRange(s.getRange('AU').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
if(values1Rule1[row][col].toString().match("BEfr") == "BEfr")
s.getRange(s.getRange('BEfr').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
if(values1Rule1[row][col].toString().match("BEnl") == "BEnl")
s.getRange(s.getRange('BEnl').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
if(values1Rule1[row][col].toString().match("BR") == "BR")
s.getRange(s.getRange('BR').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
if(values1Rule1[row][col].toString().match("CAen") == "CAen")
s.getRange(s.getRange('CAen').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else
s.getRange(s.getRange('I3:BO').offset(row,0,1,200).getA1Notation()).setBackgroundColor('white').setFontColor('black');
}
}
};
答案 0 :(得分:0)
发生的事情是你有很多将单独评估的if语句,然后是一个将被评估的最终if-else语句。只要输入不是“CAen”,您似乎就会将背景重置为白色。
将您的代码更改为
if(values1Rule1[row][col].toString().match("AR") == "AR")
s.getRange(s.getRange('AR').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else if(values1Rule1[row][col].toString().match("AU") == "AU")
s.getRange(s.getRange('AU').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else if(values1Rule1[row][col].toString().match("BEfr") == "BEfr")
s.getRange(s.getRange('BEfr').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else if(values1Rule1[row][col].toString().match("BEnl") == "BEnl")
s.getRange(s.getRange('BEnl').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else if(values1Rule1[row][col].toString().match("BR") == "BR")
s.getRange(s.getRange('BR').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else if(values1Rule1[row][col].toString().match("CAen") == "CAen")
s.getRange(s.getRange('CAen').offset(row,col,1,1).getA1Notation()).setBackgroundColor(color1);
else
s.getRange(s.getRange('I3:BO').offset(row,0,1,200).getA1Notation()).setBackgroundColor('white').setFontColor('black');
}
目前的代码写得很差。您可以简单地将toString()
结果转换为临时变量并进行比较(不知道为什么需要match
函数而不是==
运算符)。此外,您可以看到将突出显示放入其自身的函数中,该函数采用字符串参数和颜色。