Javascript 为范围内的每个单元格添加值(谷歌应用程序脚本)
我正在为GoogleSheets构建一个宏,在这个宏中我遍历一个范围,并为每个单元格添加一个值。我一直在尝试几种不同的方法,但都很慢。对于30个细胞,这大约需要一分钟。有没有办法让它更快/用不同的方式写?这是一个宏,将在一天内运行很多次,最大范围约为30列Javascript 为范围内的每个单元格添加值(谷歌应用程序脚本),javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在为GoogleSheets构建一个宏,在这个宏中我遍历一个范围,并为每个单元格添加一个值。我一直在尝试几种不同的方法,但都很慢。对于30个细胞,这大约需要一分钟。有没有办法让它更快/用不同的方式写?这是一个宏,将在一天内运行很多次,最大范围约为30列 for (var j = 1; j <= range.getNumColumns(); j++) { if(range.getCell(1, j).getValue() == "") {
for (var j = 1; j <= range.getNumColumns(); j++) {
if(range.getCell(1, j).getValue() == "") {
range.getCell(1,j).setValue(valueToAdd/(colEnd-colStart));
} else range.getCell(1,j).setValue(valueToAdd/(colEnd-colStart)+(parseFloat(range.getCell(1,j).getValue())));
}
for(var j=1;j试着这样做:
function iterateThroughARange() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Sheet1');
const rg=sh.getDataRange();
const vs=rg.getValues();
vs.forEach(function(r,i){
r.forEach(function(c,j){
vs[i][j]='Your Adjustment';
});
})
rg.setValues(vs);
}
通过这种方式,您可以一次获取所有数据,执行调整并一次保存所有数据。如果您不想在某些单元格中写入数据,这将变得更加棘手。然后,您可能必须返回到写入单个单元格的较慢方法。因此,请思考布局排列如何对脚本速度产生相当大的影响。Luckilty,它的整个范围都会被改变,谢谢!我现在来测试一下