更改单元格和字体的颜色

Cod*_*der 3 google-sheets gs-conditional-formatting

这是我第一次使用Google脚本。当行包含某些值时,我想更改行和文本的背景颜色。使用这段代码,我取得了一些成功:

function onEdit() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var rows = sheet.getRange('a1:z');
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++)
  {
    var n = i+1;
    var backgroundColor;
    var textColor;

    if(values[i].indexOf('Won'))
    {
      backgroundColor = 'red';
      textColor = 'blue';
    }
    else if(values[i].indexOf('Lost'))
    {
      backgroundColor = 'green';
      textColor = 'yellow';
    }

    sheet.getRange('a'+n+':z'+n).setBackgroundColor(backgroundColor);    
    sheet.getRange('a'+n+':z'+n).setFontColor(textColor); 
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,现在包含“ 获胜”的行变为带有黄色文本的绿色,而包含“ 丢失”的行则变为带有蓝色文本的红色。

几个问题:

  1. 每个空行也会变红-如何解决此问题?
  2. 我的if / else函数似乎被反转了,但是效果很好。我的理解是,如果该行包含“已赢”,则它实际上应该变成红色并带有蓝色文本。谁能帮助我更好地理解这一部分?

Cod*_*der 6

我尝试了一下,它为我工作了,但是redpandasuit(在下面的评论中)对想要通过条件格式进行尝试的人来说是一个绝佳的答案。这是代码版本(Google脚本):

function onEdit() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('ZB Squash 2015');
  var rows = sheet.getRange('a1:z');
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++)
  {
    var n = i+1;
    var backgroundColor;
    var textColor;


      if(values[i].indexOf('Won') == -1)
      {
        backgroundColor = 'red';
        textColor = 'yellow';
      }

      if(values[i].indexOf('Lost') == -1)
      {
        backgroundColor = 'green';
        textColor = 'yellow';
      }

      if(values[i].indexOf('Won') && values[i].indexOf('Lost'))
      {
        backgroundColor = 'white';
      }

    sheet.getRange('a'+n+':z'+n).setBackgroundColor(backgroundColor);    
    sheet.getRange('a'+n+':z'+n).setFontColor(textColor); 
  }
}
Run Code Online (Sandbox Code Playgroud)

用户赢得的行现在变为绿色,用户丢失的行变为红色,所有其他行保持白色。