2016-02-17 37 views
0

我正在尝试这样做:如果列E包含单词ok,则列D将被格式化为红色。 Seens preety很容易,但有些事情是错误的,因为我没有诠释if。你们知道什么是错的吗?我已阅读了一些其他主题,但与其他主题相似无法在对象上找到函数setBackground

function onEdit() { 

var ss =SpreadsheetApp.getActiveSheet(); 
var myRangeValues = ss.getRange('D7:E').getValues(); 

Browser.msgBox(myRangeValues); 
for (var i = 0; i < myRangeValues.length; i++){ 
if(myRangeValues[i][0] == 'ok'){ 
    myRangeValues[i][0].setBackground('red'); 

} 
} 
} 

感谢您的关注。

编辑: 新的代码不工作。我试图把logger.log放在其他行中。即使没有记录器,我得到的错误是在对象中找不到函数setBackground。

function onEdit() { 

var ss =SpreadsheetApp.getActiveSheet(); 
var myRangeValues = ss.getRange('D7:E').getValues(); 
for (var i = 0; i < myRangeValues.length; i++) 
{ 
if(myRangeValues[i][1] == 'ok') 
{ 
    myRangeValues[i][0].setBackground('red'); 
    //Logger.log("myRangeValues[i][1]: " + myRangeValues[i][1]); 

} 
} 

} 
+0

不能完成它。尝试了另一种方式,但是所有这些都导致了找不到函数setBackground或setBackgroundColor的相同方式 – ArthurMFB

回答

1

您正在混合的方法。 值数组没有setBackground()方法,这是一个spreadsheet range method

使用下面的代码做你想要什么:

function onEdit() { 
    var ss =SpreadsheetApp.getActiveSheet(); 
    var myRangeValues = ss.getRange('D7:E').getValues(); 
    var myRangeColors = ss.getRange('D7:E').getBackgrounds();// get the colors 
    for (var i = 0; i < myRangeValues.length; i++) 
    { 
    if(myRangeValues[i][1] == 'ok') 
    { 
     myRangeColors[i][0]='#F00'; 
    } 
    } 
    ss.getRange('D7:E').setBackgrounds(myRangeColors); //set the modified colors 
}