6

这是我第一次使用 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它实际上应该变成红色并带有蓝色文本。谁能帮我更好地理解这部分?
4

2 回答 2

12

我试过这个,它对我有用,但是对于任何想通过条件格式尝试它的人来说,redpandasuit(在下面的评论中)给出了极好的答案。这是代码版本(谷歌脚本):

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); 
  }
}

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

于 2015-02-02T08:53:20.080 回答
3

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

在下拉框中选择自定义公式并尝试

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

在此公式中,A1 表示您将在哪一列中输入文本。根据需要进行更改。

然后,您可以从公式框旁边的可用选项中选择文本和背景颜色,并选择您的范围以将约束添加到有颜色的内容。

然后重复该过程并为“丢失”添加第二个自定义公式

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

这些公式可以进一步定制为具有多个触发词、区分大小写等等。查看此链接以获取想法:https ://support.google.com/a/answer/1371417?hl=en

我希望这有帮助:)

于 2015-01-29T16:45:23.850 回答