根据值更改单元格背景颜色onEdit

5th*_*4x4 3 google-sheets google-apps-script

如何根据onEdit()函数中单元格的内容更改单元格背景颜色?

我已经测试了很多版本的代码 - 有些代码工作得很好,有些代码根本没用.但我还没有按照我需要的方式让它工作.

请原谅我写的方式缺乏优雅,但实际上我需要保持代码尽可能简单,因为会有很多细胞变化,许多条件,以及许多不同数量的细胞将根据什么改变在工作表上更改.

好的,所以这里......

function onEdit(event)
{
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");   
 var changedCell= event.source.getActiveRange().getA1Notation();

 if (changedCell == 'B3') {
 var c = ss.getRange("B3").getValue();
  if (c < 2); {
  ss.getRange("B3").setBackgroundColor('#ff0000');  
  ss.getRange("B12").setBackgroundColor('#ff0000'); 
  }
  if (c > 1); {
  ss.getRange("B3").setBackgroundColor('#000000');  
  ss.getRange("B12").setBackgroundColor('#000000'); 
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

Sri*_*rik 6

有几点需要注意

1.方法的名称是setBackground和否setBackgroundColor

2.如何格式化单元格B3.仅当比较格式为整数时才进行比较.在大多数情况下,Google Spreadsheet会根据数据类型自动格式化单元格,但如果我正在编写代码,我会仔细检查.所以使用类似的东西

 var c = parseInt(ss.getRange("B3").getValue()) ;
Run Code Online (Sandbox Code Playgroud)

3. if条件后不需要分号.这将立即终止if条件.所以使用

if (c < 2) {
Run Code Online (Sandbox Code Playgroud)

if (c > 1) {
Run Code Online (Sandbox Code Playgroud)

4.最后,我不知道数据是如何进入B3的,但是如果你在B3中有1.5,那么这两个if条件都会变为真,你的背景颜色会被覆盖.所以,我建议你使用if..elseif

为了更好的可读性,我会使用setBackground('red')setBackground('white')常见的颜色.