Val*_*lip 4 javascript google-apps-script
我为电子表格中的偶数行设置了不同的背景颜色,Google Apps Script但速度非常非常慢......我该如何优化它?
电子表格示例:https : //docs.google.com/spreadsheets/d/1yRotjooCRpuuSTjjgFEzw4xxqPLJwMZJPchYQeNvUyw/edit? usp =sharing
通过转到工具 -> 脚本编辑器查看 GS 代码...
这是代码:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("A1:Z1000");
ss.setActiveRange(range);
var totalRows = SpreadsheetApp.getActiveRange().getNumRows();
var totalColumns = SpreadsheetApp.getActiveRange().getNumColumns();
var startRow = SpreadsheetApp.getActiveRange().getRow();
var startColumn = SpreadsheetApp.getActiveRange().getColumn();
var sheet = SpreadsheetApp.getActiveSheet();
var row = startRow;
while (row < totalRows+startRow)
{
var column = startColumn;
while (column < totalColumns+startColumn){
if(row%2 == 0){
sheet.getRange(row, column).setBackground("#F3F3F3");
}
column++;
}
row++;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用新的applyRowBanding():
将默认的行带主题应用于范围。默认情况下,条带具有页眉而没有页脚颜色。
例子:
function setColors() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("A1:Z1000");
// first remove any existing alternating colors in range to prevent error "Exception: You cannot add alternating background colors to a range that already has alternating background colors."
range.getBandings().forEach(banding => banding.remove());
// apply alternate background colors
range.applyRowBanding();
}
Run Code Online (Sandbox Code Playgroud)
结果:
有关更多选项,请参阅
逐行而不是逐个单元地进行。您也可以直接在要更改的行上循环。
function setBackgroundColorOnEvenLines() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var totalRows = sheet.getMaxRows();
var totalColumns = sheet.getMaxColumns()
for (var i=2; i <= totalRows; i+=2){
sheet.getRange(i, 1, 1, totalColumns).setBackground("#F3F3F3");
}
}
Run Code Online (Sandbox Code Playgroud)
此参考展示了如何像上面一样引用整行。
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |