2016-02-17 40 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 
}