我是google工作表的新手,我喜欢将条件格式设置为特定列。
从第8行开始,D列 我想根据单元格设置背景颜色 如果细胞内容如“通过”那么那么背景颜色应该是绿色的(183,225,205) 如果单元格内容如“失败”那么然后背景颜色应为红色(213,139,139) 如果单元格内容如“待定”等。那么背景颜色应该是黄色(252,232,178)
因此,在编辑单元格时,我想检查单元格的值
function onEdit(e){
var actualSheetName =
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName()
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var allValuesOnColumA = ss.getRange("A1:A").getValues()
var lastRow = allValuesOnColumA.filter(String).length + 1
var range = ss.getRange(8, lastRow)
conditionalFormatting(8, 4, (lastRow +1) -8, 1, actualSheetName)
}
我开始使用条件格式函数,但我无法使其工作。
function conditionalFormatting(rowN, colN, optRows, optCols, spreadsheetName)
{
var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
var mySheet = mySpreadsheet.getSheetByName(spreadsheetName)
var range1Values = mySheet.getRange(rowN,colN, optRows, optCols).getValues()
//debugger
for (var row in range1Values)
{
for (var col in range1Values[row])
{
for(var i=0, iLen=range1Values.length; i<iLen; i++)
{
if(range1Values[row][col] == 'pass')
{
//debugger
Logger.log('Local Row ' + locRow + ' Local Col ' + locCol)
var pendingCell=mySheet.getRange(locRow, locCol)
pendingCell.setBackground("green")
}
else if(range1Values[row][col] == 'fail')
{
// Logger.log('fail in')
//mySheet.getRange(range1Values.offset(row, col, 1, 1).getA1Notation()).setBackgroundColor(213,139,139) //red
//Logger.log('fail Out')
}
else if(range1Values[row][col] == 'pending')
{
//Logger.log('Pending in')
//mySheet.getRange(range1Values.offset(row, col, 1, 1).getA1Notation()).setBackgroundColor(252,232,178) //Yellow
//Logger.log('Pending Out')
}
}
}
}
}
有人可以帮帮我吗? 提前致谢
编辑:
期望的结果应如下所示:
答案 0 :(得分:0)
尝试此操作(适用于具有关键字'pass','fail'和'pending'的单元格,从第8行开始,对于列D指定):
function onEdit(e){
var actualSheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = ss.getLastRow();
conditionalFormatting(8, 4, (lastRow +1) - 8, 1, actualSheetName);
}
function conditionalFormatting(rowN, colN, optRows, optCols, spreadsheetName) {
var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var mySheet = mySpreadsheet.getSheetByName(spreadsheetName);
var range1Values = mySheet.getRange(rowN,colN, optRows, optCols).getValues();
for (var row in range1Values) {
for (var col in range1Values[row]) {
if (range1Values[row][col].toLowerCase() == 'pass' || range1Values[row][col].toLowerCase() == 'passed') {
mySheet.getRange(Number(row)+rowN, Number(col)+colN).setBackground('green')
Logger.log('Contents PASS')
} else if (range1Values[row][col].toLowerCase() == 'fail' || range1Values[row][col].toLowerCase() == 'failed') {
mySheet.getRange(Number(row)+rowN, Number(col)+colN).setBackgroundRGB(213,139,139)
Logger.log('Contents FAIL')
} else if (range1Values[row][col].toLowerCase() == 'pending') {
mySheet.getRange(Number(row)+rowN, Number(col)+colN).setBackgroundRGB(252,232,178)
Logger.log('Contents PENDING')
} else {
Logger.log('Contents did not meet any of the criteria')
}
}
}
}
出于好奇,您是否有任何理由不仅仅使用Google表格中的内置条件格式功能?虽然这段代码有效,但我发现使用内置的条件格式化功能要容易得多。
编辑(评论中的其他问题):
修改后的代码与关键字不区分大小写,并且还包含关键字“已通过”&amp; '失败'
希望这有帮助!