我尝试做类似的事情:如果列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]);
}
}
}
答案 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
}