更改单元格和字体的颜色

Changing color of cell and font

这是我第一次使用 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); 
  }
}

所以现在包含 Won 的行变成绿色和黄色文本,包含 Lost 的行变成红色和蓝色文本。

几个问题:

  1. 每个空行也会变成红色 - 我该如何解决这个问题?
  2. 我的if/else函数似乎被反转了,但它运行良好。我的理解是,如果该行包含 Won 它实际上应该变成红色和蓝色文本。谁能帮助我更好地理解这部分?

我会尝试使用条件格式来解决这个问题。为此突出显示所需的行,右键单击它们并 select 条件格式。

在下拉框中select自定义公式试试

=RegExMatch($A1,"(?i)Won")

在此公式中,A1 表示您将在其中输入文本的列。根据需要更改它。

然后您可以 select 公式框旁边的可用选项中的文本和背景颜色,以及 select 您的范围以对颜色添加限制。

然后重复该过程并为 "Lost"

添加第二个自定义公式

=RegExMatch($A1,"(?i)Lost")

可以进一步自定义这些公式,使其具有多个触发词、区分大小写等。看看这个 link 的想法:https://support.google.com/a/answer/1371417?hl=en

希望对您有所帮助:)

我试过了,它对我有用,但是 redpandasuit(在下面的评论中)对任何想通过 conditional formatting 尝试的人来说都是极好的答案。 这是代码版本(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); 
  }
}

用户获胜的行现在变为绿色,用户失败的行变为红色,所有其他行保持白色。