Javascript 谷歌电子表格中背景行颜色的优化
我使用Javascript 谷歌电子表格中背景行颜色的优化,javascript,google-apps-script,Javascript,Google Apps Script,我使用Google Apps Script为电子表格中的偶数行设置了不同的背景色,但速度非常慢……有什么办法可以优化它吗 电子表格示例: 进入工具->脚本编辑器查看GS代码 代码如下: function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var range = ss.getRange("A1:Z1000"); ss.setActiveRange(range); var totalRows
Google Apps Script
为电子表格中的偶数行设置了不同的背景色,但速度非常慢……有什么办法可以优化它吗
电子表格示例:
进入工具->脚本编辑器查看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++;
}
}
函数myFunction(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var范围=ss.getRange(“A1:Z1000”);
ss.setActiveRange(范围);
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(行
逐行而不是逐个单元格。
也可以直接在要更改的行上循环
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");
}
}
函数setBackgroundColorOnEvenLines(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var totalRows=sheet.getMaxRows();
var totalColumns=sheet.getMaxColumns()
对于(var i=2;i当您要求使用Google Apps脚本解决方案时,我更喜欢通过公式设置条件格式,而不是将其作为脚本解决方案进行设置-我觉得这样更简单、更快、更直观
=mod(A1,2)=0
将格式化定义范围内的所有偶数行。您也可以查看此调用:
还有它的姐妹电话
这将返回所有背景色的整个范围的二维数组
使用此方法,您可以获得整个范围的数组,以两个为增量逐步遍历,并将每行的所有元素设置为所需的备用背景颜色(可能使用此处描述的方法之一:)。然后在末尾调用SetBackgroundColor(颜色)来设置颜色
这样,您只需在最后调用一次即可实际更新电子表格,而这一部分将花费最多的时间,并且会最大程度地降低原始代码的速度。您可以使用新的:
对区域应用默认的行带状主题。默认情况下,带状有页眉颜色,没有页脚颜色
例如:
function setColors() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("A1:Z1000");
// range.clearFormat(); // uncomment if you got error "Exception: You cannot add alternating background colors to a range that already has alternating background colors."
// apply alternate background colors
range.applyRowBanding();
}
结果:
有关更多选项,请参见
@PavelValeriu现在就试试吧!