更改单元格和字体的颜色
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 的行变成红色和蓝色文本。
几个问题:
- 每个空行也会变成红色 - 我该如何解决这个问题?
- 我的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);
}
}
用户获胜的行现在变为绿色,用户失败的行变为红色,所有其他行保持白色。
这是我第一次使用 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 的行变成红色和蓝色文本。
几个问题:
- 每个空行也会变成红色 - 我该如何解决这个问题?
- 我的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);
}
}
用户获胜的行现在变为绿色,用户失败的行变为红色,所有其他行保持白色。