我正在使用带有JavaScript的Google Sheet脚本来处理一些数据。我注意到它的getValue()函数需要很长时间才能运行,特别是在为不同的单元运行多次时。以下是我的测试功能。
function timeTest (num) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Transactions');
var log = '';
var preSec = new Date().getTime() / 1000;
for (var i = 4; i < num; i++) {
var fc = sheet.getRange(i,1).getValue(); // values are like 100, 110,120 etc
if (i % 20 == 0) {
var seconds = new Date().getTime() / 1000;
var secDiff = seconds - preSec;
log = log + "row " + i + " " + secDiff + "\n";
}
}
return log;
}
我得到了以下结果。基本上,每20行需要更长的运行时间。 第20行0.07800006866455078 第40行0.08800005912780762 第60行0.0989999771118164 第80行0.1100001335144043 第100行0.12199997901916504 第120行0.2090001106262207 第140行0.22099995613098145 第160行0.23099994659423828 第180行0.24200010299682617 第200行0.25300002098083496 第220行1.50600004196167 第240行3.064000129699707 第260行4.437000036239624 第280行5.789000034332275 第300行7.088000059127808 第320行8.038000106811523 第340行8.91100001335144 第360行9.603000164031982 第380行10.216000080108643 第400行10.258000135421753 第420行10.271000146865845 第440行10.282999992370605 第460行10.295000076293945 第480行10.308000087738037
如果我评论了getValue()行,我得到以下内容---需要几毫秒才能运行 第20行 第40行0 第60行 第80行 第100行0 第120行0 第140行 第160行 第180行0 第200行0.0009999275207519531 第220行0.0009999275207519531 第240行0.0009999275207519531 第260行0.0009999275207519531 第280行0.0009999275207519531 第300行0.0009999275207519531 第320行0.0009999275207519531 第340行0.0009999275207519531 第360行0.0019998550415039062 第380行0.0019998550415039062 第400行0.0019998550415039062 第420行0.0019998550415039062 第440行0.0019998550415039062 第460行0.0019998550415039062 第480行0.0019998550415039062
有什么想法? TIA