【发布时间】:2016-07-27 21:53:02
【问题描述】:
我在谷歌表格中创建了我的第一个函数。基本上我让它按照我想要的方式工作,但它达到了最大执行时间限制。我把代码贴在下面,我相信有几种方法可以优化它,让它运行得更快。
代码基本上循环通过工作表中的记录来添加图像文件名。每个产品有六个图像文件名,有时我需要添加新行来列出所有文件名,如下图所示:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
var c = 1;
for (var i=1; i<values.length; i++) {
c = 1;
do {
c = c + 1;
i = i + 1;
} while (values[i+1][13] == values[i][13]);
while (c < 6) {
sheet.insertRowsAfter(i+1,1);
c = c + 1;
i = i + 1;
sheet.getRange(i+1,1).setValue(values[i-1][0]);
}
range = sheet.getDataRange();
values = range.getValues();
if(c <= 6) {
sheet.getRange(i-4,25).setValue(values[i-5][13] + "_main.jpg");
sheet.getRange(i-3,25).setValue(values[i-5][13] + "_detail.jpg");
sheet.getRange(i-2,25).setValue(values[i-5][13] + "_detail1.jpg");
sheet.getRange(i-1,25).setValue(values[i-5][13] + "_detail2.jpg");
sheet.getRange(i,25).setValue(values[i-5][13] + "_side.jpg");
sheet.getRange(i+1,25).setValue(values[i-5][13] + "_back.jpg");
}
if(c > 6) {
sheet.getRange(i-c+2,25).setValue(values[i-c+2][13] + "_main.jpg");
sheet.getRange(i-c+3,25).setValue(values[i-c+2][13] + "_detail.jpg");
sheet.getRange(i-c+4,25).setValue(values[i-c+2][13] + "_detail1.jpg");
sheet.getRange(i-c+5,25).setValue(values[i-c+2][13] + "_detail2.jpg");
sheet.getRange(i-c+6,25).setValue(values[i-c+2][13] + "_side.jpg");
sheet.getRange(i-c+7,25).setValue(values[i-c+2][13] + "_back.jpg");
}
}
【问题讨论】:
标签: google-apps-script google-sheets