Javascript 如何在谷歌应用软件scipts中加速这个循环?
在我想说的任何事情之前,我知道批处理函数在更新电子表格方面更有效,但是在这里,我尝试创建一个充满交替颜色的列表,尽管我正在使用Javascript 如何在谷歌应用软件scipts中加速这个循环?,javascript,google-apps-script,google-sheets,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Sheets Api,在我想说的任何事情之前,我知道批处理函数在更新电子表格方面更有效,但是在这里,我尝试创建一个充满交替颜色的列表,尽管我正在使用range.setBackgrounds()更新表格,但仍然需要花费很长的时间,有什么方法可以优化它吗 var range = SpreadsheetApp.getActiveSheet().getRange("B11:G30"); var background = []; var startRow = range.getRow();
range.setBackgrounds()
更新表格,但仍然需要花费很长的时间,有什么方法可以优化它吗
var range = SpreadsheetApp.getActiveSheet().getRange("B11:G30");
var background = [];
var startRow = range.getRow();
var maxRows = range.getRow() + range.getNumRows()
for (row = startRow; row < maxRows ; row++) {
if (row % 2 == 1) {
var colour = ["#D9D9D9", "#D9D9D9", "#D9D9D9", "#D9D9D9", "#D9D9D9", "#D9D9D9"];
}
else {
var colour = ["#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF"];
}
background.push(colour);
}
range.setBackgrounds(background);
var range=SpreadsheetApp.getActiveSheet().getRange(“B11:G30”);
var背景=[];
var startRow=range.getRow();
var maxRows=range.getRow()+range.getNumRows()
对于(行=startRow;行
这是的另一个版本,所以请不要拒绝他的回答
但这肯定会给您带来一些额外的性能提升:
function alternateColors() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
const sr=2;
const rg=sh.getRange(sr,1,sh.getLastRow()-sr+1,sh.getLastColumn());
let cA=rg.getBackgrounds();
cA=cA.map((r,i)=>Array(r.length).fill([i%2==1?'#d9d9d9':'#ffffff']).flat());
rg.setBackgrounds(cA);
}
其思想是,通过使用而不是两个
forEach
循环和元素分配操作,您将获得更好的性能,尤其是在输入矩阵较大的情况下。这是的另一个版本,因此请不要接受他的答案
但这肯定会给您带来一些额外的性能提升:
function alternateColors() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
const sr=2;
const rg=sh.getRange(sr,1,sh.getLastRow()-sr+1,sh.getLastColumn());
let cA=rg.getBackgrounds();
cA=cA.map((r,i)=>Array(r.length).fill([i%2==1?'#d9d9d9':'#ffffff']).flat());
rg.setBackgrounds(cA);
}
其思想是,通过使用而不是两个
forEach
循环和元素分配操作,您将获得更好的性能,尤其是在输入矩阵较大的情况下。您的范围未定义。请提供请注意可复制方面它现在起作用了吗?您的范围未定义。请提供请注意可复制方面它现在工作吗?非常感谢,运行速度比我的原始区域快很多,但有时它不运行?您如何运行它?您所说的它不运行是什么意思?它是否返回任何错误?我把它放在一个尴尬的位置,因此它正在生成数组,但它没有更新背景,我只需要重新构造我的代码,现在项目完成了很多,运行速度比我原来的区域快得多,但有时它不运行?你是如何运行它的?你说的它不运行是什么意思?它是否返回任何错误?我把它放在一个尴尬的位置,因此它生成了数组,但它没有更新背景,我只需要重新构造我的代码,现在项目完成了,可以自由使用Marios answer。我只分享我所知道的,我在这里更多的是学习而不是教学。请随意使用马里奥回答。我只分享我所知道的,我在这里更多的是学习而不是教书。