改变单元格和字体的颜色

时间:2015-01-29 14:16:38

标签: 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); 
  }
}

所以现在包含赢了的行变为带黄色文本的绿色,包含丢失的行变成带蓝色文字的红色。

有几个问题:

  1. 每个空行也会变红 - 我该如何解决?
  2. 我的if / else函数似乎被反转,但它完美无缺。我理解的方式是,如果行包含赢了,它实际上应该用蓝色文本变成红色。任何人都可以帮助我更好地理解这部分吗?

2 个答案:

答案 0 :(得分:4)

我尝试了这个并且它对我有用,但是对于想要通过conditional formatting进行尝试的人来说,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); 
  }
}

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

答案 1 :(得分:3)

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

在下拉框中选择自定义公式,然后尝试

= REGEXMATCH($ A1,&#34;(ⅰ)韩元&#34)

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

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

然后重复该过程并为&#34; Lost&#34;

添加第二个自定义公式

= REGEXMATCH($ A1,&#34;(ⅰ)丢失&#34)

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

我希望这会有所帮助:)