无法在对象上找到函数setBackground

时间:2016-02-17 00:59:47

标签: arrays google-apps-script

我尝试做类似的事情:如果列E有单词ok,则列D被格式化为红色。 Seens preety很容易,但有些事情是错误的,因为我没有参与if。你们知道出了什么问题吗?我已经阅读了其他一些主题,但是看上去非常相似

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]);

 }
}

}

1 个答案:

答案 0 :(得分: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
}