我有一张Google Sheet文档,我将其用作工作计划。我目前正在使用以下脚本来排序和更改整个行背景,具体取决于列中的数字" K&#34 ;;但是,我现在想知道如何改变只有列的背景颜色"我"取决于那里键入的内容。例如,如果我键入" Red"在该列中,我希望仅将该单个单元格的背景更改为红色。
我知道这可以使用条件格式轻松完成,但是我不断在此工作表中添加新行并将其他行移到另一页,因此条件格式很快就会丢失哪个范围以正确应用它(如果有意义的话)
谢谢!
function onEdit(e) {
if(e.range.columnStart === 11) {
// color the row according to the color codes and logic shown below
var refs = [14, "#93c47d", 15, " #00ffff", 16, "#f4c432", 17, "#ff00ff", 20, "#ffff00", ,"#ffffff"], index;
if(e.value >= 1 && e.value < 14) {
index = 0;
} else if(refs.indexOf(Number(e.value)) !== -1) {
index = refs.indexOf(Number(e.value));
} else {
index = refs.length - 2;
}
var r = e.range.rowStart, A1 = r + ":" + r;
e.source.getRange(A1).setBackground(refs[index + 1]);
// sort the range after coloring
e.source.getRange("A:K").sort({column: 11});
}
}
答案 0 :(得分:0)
输入if
后我要做的第一件事就是让你的refs
成为一个对象而不是一个数组:
var refs = {
green: "#93c47d",
aqua: "#00ffff",
orange: "#f4c432",
magenta:"#ff00ff",
yellow: "#ffff00"
};
然后,您可以根据对象中键的存在来获得所需的颜色,即当您键入&#39; orange&#39;你拉出与它相关的颜色值,#f4c432。这样你就不必记住颜色代码。
var color;
if(refs[e.value]){ // If this key exists, use its value
color = refs[e.value];
} else {
color = "#ffffff"; // Default value
}
最后,您可以设置行的颜色:
var row = e.range.getRow();
e.source.getRange(row,1,1,e.source.getMaxColumns()).setBackground(color);
完成排序。