1)我将至少有4列,其中单元格将具有不同的背景 2)我必须检查一行中至少有3个单元格是否说过RED背景 3)如果是这样的话 - 在该行的单元格中输出smth,按照"警告"
我没有js家伙,我唯一得到的是:
function check() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Canvas');
if (sheet.getRange("E5").getBackground() == '#ff0e13' && sheet.getRange("F5").getBackground() == '#ff0e13' && sheet.getRange("D5").getBackground() == '#ff0e13') {
return sheet.getRange('M5').setValue('Warning');
}
}
这仅检查某一行中的某些单元格。如何编辑它以使用数组("将它拖到所有行")?
答案 0 :(得分:1)
解决方案是读取数组中的背景颜色并逐行迭代此数组,计算每次出现的红色(或任何其他颜色,只需在条件中调整)。 然后更新另一个数组中的工作表值,最后将两个数组写回工作表。
阅读代码中的注释,我添加了将“警告”单元格着色的选项,但如果您不需要,可以将其删除。
function checkBGColors() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Canvas');
var maxWidthRange = sheet.getRange(1,1,sheet.getLastRow(),sheet.getMaxColumns());// get the whole filled part of the sheet + every possible column
var BGColors = maxWidthRange.getBackgrounds();
var Values = maxWidthRange.getValues();
for(var n=0;n<BGColors.length;n++){
var count = 0;
for(var BG in BGColors[n]){
Logger.log(BGColors[n][BG]);
if(BGColors[n][BG] == '#ff0000'){
count++ ; // if BG color is red then increment counter
}
}
Logger.log('Count = '+count);
if(count >= 3){
Values[n][12] = 'Warning' ;// column M is index 12, adapt if needed
BGColors[n][12] = 'Orange';// eventually colorize the warning cell
}
}
maxWidthRange.setValues(Values);// update values
maxWidthRange.setBackgrounds(BGColors);//update colors
}