我的应用程序脚本代码运行得很慢,如何让它变得更短更快

问题描述 投票:0回答:1

下面是运行缓慢的代码,我们如何改进这个或任何其他替代选项来做到这一点

function splitAndTranspose() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var lastRowF = sheet.getRange("G" + sheet.getLastRow()).getValue() ? sheet.getLastRow() + 1 : sheet.getLastRow();
 var currentRow = 2;

 for (var row = 2; row <= lastRowF; row++) {
   var dataB = sheet.getRange("B" + row).getValue().toString().split(",");
   var dataC = sheet.getRange("C" + row).getValue().toString().split(",");
   var dataD = sheet.getRange("D" + row).getValue().toString().split(",");

   for (var i = 0; i < dataB.length; i++) {
     sheet.getRange(currentRow, 7).setValue(dataB[i]);
     sheet.getRange(currentRow, 8).setValue(dataC[i]);
     sheet.getRange(currentRow, 9).setValue(dataD[i]);
     currentRow++;
   }
 }
}
performance
1个回答
0
投票

您应该尽可能避免调用您的工作表,因此请避免循环中的 getValue()/SetValue() 。 您可以通过一次获取所有数据来实现相同的结果:getValues(),处理您的数据,然后使用 setValues() 将其打印回来。

希望这有帮助!

干杯

© www.soinside.com 2019 - 2024. All rights reserved.