我有一个脚本,可以将单元格绘制为红色,并且如果合并,还会在单元格内放入一些文本:
function myFun() {
let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let range = ss.getDataRange();
let activeRange = ss.getRange("A1:AH60");
Logger.log(activeRange);
let mergedRanges = activeRange.getMergedRanges();
Logger.log(mergedRanges);
Logger.log(range);
mergedRanges.forEach(function(range) {
range.setValue("my value");
range.setBackground("red");
});
let timestamp = ss.getRange("A1");
timestamp.setValue("script successfully ran " + new Date());
}
但是,我在谷歌表格中需要条件格式,如果单元格不为空,则将单元格涂成绿色。我能否以某种方式为脚本设置的颜色分配比 Google 表格中条件格式设置的颜色更高的优先级,而不必更改条件格式中的任何内容?
我很困惑,因为我真的不知道我可以尝试解决这个问题。
条件格式会覆盖应用程序脚本所做的更改。为了实现这两个条件,下面的脚本将在单元格不空白时将背景设置为绿色,如果单元格合并则将背景设置为红色,如果单元格为空白则将背景设置为白色。
function myFun(){
let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let activeRange = ss.getRange("A1:AH60");
let val = activeRange.getValues();
let mergedRanges = activeRange.getMergedRanges();
val.forEach((x,i) =>
x.forEach((y,j) => {
if(y != "") // check if the cell is not empty and it will change the value to green
ss.getRange(i+1,j+1).setBackground("green");
else // if the cell is blank it will change the color to white
ss.getRange(i+1,j+1).setBackground("white");
})
);
mergedRanges.forEach(function(range) {
range.setValue("my value");
range.setBackground("red");
});
let timestamp = ss.getRange("A1");
timestamp.setValue("script successfully ran " + new Date());
}
示例输出:
参考: