【发布时间】:2013-06-21 06:23:20
【问题描述】:
我有两个电子表格。我想将spreadsheet1 的C 列与spreadsheet2 的A 列相匹配。这两个电子表格都有超过 8000 条记录。由于记录数量巨大,我的脚本不断给出exceeded maximum execution time 错误。这是脚本
function compare() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetList1=ss.getSheetByName("spreadsheet1");
var sheetList2=ss.getSheetByName("spreadsheet2");
var sheet1Data=sheetList1.getRange(2,3,sheetList1.getLastRow(),1).getValues();
var sheet2Data=sheetList2.getRange(1,1,sheetList2.getLastRow(),1).getValues();
for (i in sheet2Data){
var row = 2;
for (j in sheet1Data){
if (sheet1Data[j][0]==sheet2Data[i][0]){
sheetList1.getRange("A"+row).setValue('Inactive');
}
row++;
}
}
}
关于优化此脚本的任何建议。或者如何处理这个错误? 在此先感谢:)
编辑
感谢您的精彩回复。有一个问题。如果我在if 语句之前将数据推送到newSheet1Data 数组中,那么它会写入Inactive 两次。即如果有两行,它将inactive 写入四行。喜欢
newSheet1Data.push(sheet1Data[j]);
if (sheet1Data[j][2]==sheet2Data[i][0]){
newSheet1Data[j][0]='Inactive';
}
如果我在if 语句中推送数据并且没有发生匹配,则它找不到行并给出此错误TypeError: Cannot set property "0.0" of undefined to "Inactive"。喜欢
if (sheet1Data[j][0]==sheet2Data[i][0]){
newSheet1Data.push(sheet1Data[j]);
newSheet1Data[j][0]='Inactive';
}
【问题讨论】:
标签: google-apps-script google-sheets