有三个用户(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);
}
}
}
答案 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;
}
}
}