Google电子表格 - 根据用户设置行背景颜色

时间:2014-03-04 06:31:50

标签: google-apps-script google-sheets google-spreadsheet-api

有三个用户(x1,x2,x3)用于更新其日常报告,用户名在column2中。对于x1用户,将整行的背景颜色设置为红色,相应地设置为另外两个用户(蓝色,绿色)。

我希望错误是在获取整行,我不知道如何解决,请帮忙。

谢谢。

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    if(data[i][1]=="X1") {
    var headersRange = sheet.getRange(1, 1, 1, 7);
      headersRange.setBackgroundColor(red);
    }   
    else if(data[i][1]=="X2") {
      var headersRange = sheet.getRange(1, 1, 1, 7);
      headersRange.setBackgroundColor(blue);
    }    
    else if(data[i][1]=="X3") {
      var headersRange = sheet.getRange(1, 1, 1, 7);
      headersRange.setBackgroundColor(green);
    }
    else {
      var headersRange = sheet.getRange(1, 1, 1, 7);
      headersRange.setBackgroundColor(white);      
    }

  }
 }

1 个答案:

答案 0 :(得分:0)

我认为Harold的观点是你没有展示你所研究的内容(例如,链接你尝试过的一些Stack Overflow解决方案,但它们并不能满足您的需求)。这是我在代码框外思考的好习惯,所以我做了些什么。以下是示例电子表格和代码:https://docs.google.com/spreadsheet/ccc?key=0Amp9JhtmHqC8dE95U1dweXBMNjNhRmpQQURnZ1FoMFE#gid=0

但是,我会给你一个答案,希望你能做更多的研究,看看它的工作原理:

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSheet();
  //getRange starts on row 2, since I put column headers on row 1
  var data = sheet.getRange(2,1,sheet.getLastRow(),7).getValues();
  //column headers are on row 1, data.length +1 offsets for header row
  for (var i = 2; i < data.length+1; i++) {
    switch (sheet.getRange(i,1,1,1).getValue()){
      case "X1":
        sheet.getRange(i,1,1,7).setBackgroundColor('red')
        break;
      case "X2":
        sheet.getRange(i,1,1,7).setBackgroundColor('blue')
        break;
      case "X3":
        sheet.getRange(i,1,1,7).setBackgroundColor('green')
        break;
      default:
        sheet.getRange(i,1,1,7).setBackgroundColor('white')
        break;
    }
  }
}