下面是运行缓慢的代码,我们如何改进这个或任何其他替代选项来做到这一点
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++;
}
}
}
您应该尽可能避免调用您的工作表,因此请避免循环中的 getValue()/SetValue() 。 您可以通过一次获取所有数据来实现相同的结果:getValues(),处理您的数据,然后使用 setValues() 将其打印回来。
希望这有帮助!
干杯