尝试在 google 工作表脚本中存储 rows/cells 的范围。然后想要更改 row/cell 的颜色和格式
Trying to store a range of rows/cells in google sheets script. Want to then change color and formatting of row/cell
我正在使用脚本更改 google sheet 中行和单元格的背景颜色。现在我遍历行和单元格并执行颜色更改。这非常慢。我知道最好的做法是一次更改所有颜色。我无法找到如何将我的单元格范围存储在数组中,然后再次执行该范围的功能。
在此处的示例中,如果是奇数行或偶数行,我尝试将每隔一行设置为白色或灰色。
我创建了一个我认为可以运行的脚本,但它失败了。
function setRowColors() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var oddrange=[];
var evenrange=[];
for (var i = range.getRow()+7; i < range.getLastRow(); i++) {
var rowRow = i +1;
var rowRange = range.offset(i, 0, 1);
if (i % 2 == 0) {
oddrange.push(rowRange);
} else {
evenrange.push(rowRange);
}
}
oddrange.setBackgroundColors("#ffffff");
evenrange.setBackgroundColors("#efefef");
}
当我 运行 这个代码时,我得到这个错误 "Cannot find function setBackgroundColors in object "
问题:
- 在数组而不是
Range
对象上调用 setBackgroundColors()
。
流量:
- 创建一个与您要设置颜色的范围相匹配的二维颜色数组,并批量设置它们。
片段:
var lRow = sheet.getLastRow();
var headerRows = 7;
var numRows = lRow - headerRows;
var numCols = sheet.getLastColumn();
var [rows1d, cols1d] = [numRows, numCols].map(function(num){
return Array.apply([],new Array(num)); //or just `getBackgrounds()` to get a 2d array
})
var colors2d = rows1d.map(function(row, i){
var color = i%2 === 0 ? "#ffffff" : "#efefef";
return cols1d.map(function(col){
return color;
})
})
sheet.getRange(headerRows + 1, 1, numRows, numCols).setBackgrounds(colors2d);
参考文献:
除了另一个答案之外,我想提请您注意,您可以通过首先 select 所有单元格(单击 space 之间的 space 在电子表格中创建交替行行索引和列索引)(也适用于任何范围的单元格)然后转到 Format > Alternating Colors
它将调出一个菜单,您可以 select 使用您想要的颜色。
我正在使用脚本更改 google sheet 中行和单元格的背景颜色。现在我遍历行和单元格并执行颜色更改。这非常慢。我知道最好的做法是一次更改所有颜色。我无法找到如何将我的单元格范围存储在数组中,然后再次执行该范围的功能。
在此处的示例中,如果是奇数行或偶数行,我尝试将每隔一行设置为白色或灰色。
我创建了一个我认为可以运行的脚本,但它失败了。
function setRowColors() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var oddrange=[];
var evenrange=[];
for (var i = range.getRow()+7; i < range.getLastRow(); i++) {
var rowRow = i +1;
var rowRange = range.offset(i, 0, 1);
if (i % 2 == 0) {
oddrange.push(rowRange);
} else {
evenrange.push(rowRange);
}
}
oddrange.setBackgroundColors("#ffffff");
evenrange.setBackgroundColors("#efefef");
}
当我 运行 这个代码时,我得到这个错误 "Cannot find function setBackgroundColors in object "
问题:
- 在数组而不是
Range
对象上调用setBackgroundColors()
。
流量:
- 创建一个与您要设置颜色的范围相匹配的二维颜色数组,并批量设置它们。
片段:
var lRow = sheet.getLastRow();
var headerRows = 7;
var numRows = lRow - headerRows;
var numCols = sheet.getLastColumn();
var [rows1d, cols1d] = [numRows, numCols].map(function(num){
return Array.apply([],new Array(num)); //or just `getBackgrounds()` to get a 2d array
})
var colors2d = rows1d.map(function(row, i){
var color = i%2 === 0 ? "#ffffff" : "#efefef";
return cols1d.map(function(col){
return color;
})
})
sheet.getRange(headerRows + 1, 1, numRows, numCols).setBackgrounds(colors2d);
参考文献:
除了另一个答案之外,我想提请您注意,您可以通过首先 select 所有单元格(单击 space 之间的 space 在电子表格中创建交替行行索引和列索引)(也适用于任何范围的单元格)然后转到 Format > Alternating Colors
它将调出一个菜单,您可以 select 使用您想要的颜色。