【发布时间】:2017-08-29 21:21:07
【问题描述】:
我创建了一个函数,每当我运行 AppendRow 脚本时,在 AY 列中没有点 (".") 的每一行,一个包含我想要的每个信息/列的数组该表将被转移到我的主表中,该表有大约 13k 行 atm。
通常每天约有 20-40 行粘贴到第一张表中,此脚本会自动将列重新排列到我的主表中。
问题: 问题是附加到我的主工作表的每一行大约需要 8-15 秒才能转移,有时我会收到这个“超过最大执行时间”的错误,这真的很烦人。 p>
有什么方法可以让我的代码运行得更快,或者只是让脚本运行超过 5 分钟?
function AppendRow() {
var app = SpreadsheetApp;
var Sheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");
var ss2017 = SpreadsheetApp.openById("");
var sheet2017 = ss2017.getSheetByName("2017");
var lastSourceRow = Sheet.getLastRow();
var lastSourceCol = Sheet.getLastColumn();
var sourceRange = Sheet.getRange(1, 1, lastSourceRow, lastSourceCol);
var sourceData = sourceRange.getValues();
var lenght = sourceData.length;
//Logger.log(lenght);
var time = new Date();
time = Utilities.formatDate(time, "GMT+01:00", "dd/MM/yy, HH:mm:ss");
for(i=5326;i<=lenght;i++)
//my i=5326 is just cuz I had already
// information on my sheet that was transfered before this script existed
{
var columnAY = Sheet.getRange(i,51).getValue();
var checkReservation = Sheet.getRange(i,2).getValue();
if(columnAY == ".")
{
}
else
{
var B = Sheet.getRange(i,2).getValue();
var F = Sheet.getRange(i,6).getValue();
var E = Sheet.getRange(i,5).getValue();
var K = Sheet.getRange(i,11).getValue();
var L = Sheet.getRange(i,12).getValue();
var V = Sheet.getRange(i,22).getValue();
var O = Sheet.getRange(i,15).getValue();
var P = Sheet.getRange(i,16).getValue();
var Q = Sheet.getRange(i,17).getValue();
var AF = Sheet.getRange(i,32).getValue();
var AG = Sheet.getRange(i,33).getValue();
var N = Sheet.getRange(i,14).getValue();
var AI = Sheet.getRange(i,35).getValue();
var AB = Sheet.getRange(i,28).getValue();
var AC = Sheet.getRange(i,29).getValue();
var array = ["",B,F,E,K,L,"",V,O,P,Q,AF,AG,"","",N,N,AI,"","",AB,AC,"","","","",time];
sheet2017.appendRow(array);
Sheet.getRange(i,51).setValue(".");
}
}
}
p.s.:我的电子表格中还有一个菜单,可以在每次我不确定这是否与问题相关时运行脚本:P
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('My Menu')
.addItem('Copy to 2017', 'AppendRow')
.addToUi();
感谢每条评论! :)
【问题讨论】:
-
对于想要了解 Google Apps 脚本中性能瓶颈是如何发生的用户,值得阅读来自 Google 的 Best Practices Guide。
标签: arrays performance google-apps-script google-sheets