2014-01-20 2 views
0

Google 스크립트에서 실행되는 기능이 있습니다. 그러나 그것은 끝나지 않고 메인 루프에 들어가고 어딘가에서 멈추고 오류는 없습니다. 실행 설명을 보면 서버 오류가 잠시 기다렸다가 다시 시도합니다. 여러 번 실행 해 보았지만 계속 멈추지 만 i와 j의 마지막 값은 이전의 정지와 다를 때마다 멈 춥니 다. 저는 이것이 실제 서버 오류라고 상상할 수 없습니다. 코드 여야합니다.이상한 서버 오류 GAS

function start() { 
    var sheet1 = SpreadsheetApp.openByUrl("xx").getSheetByName('Blad1'); 
    var sheet2 = SpreadsheetApp.openByUrl("xx").getSheetByName('Blad1'); 
    var range1 = sheet1.getRange(1,1,54,26); 
    var range2 = sheet2.getRange(1,1,10,7); 
    var teller = 0; 

    for(var i = 1; i<=range1.getNumRows(); i++){ 
    for(var j = 1; j<=range2.getNumRows(); j++){ 
     Logger.log(i); 
     Logger.log(j); 
     if(range1.getCell(i, 8).getValue() == range2.getCell(j, 2).getValue() && range1.getCell(i, 16).getValue() == range2.getCell(j, 4).getValue() && range1.getCell(i, 19).getValue() == range2.getCell(j, 6).getValue()){ 
     range1.getCell(i,25).setValue(range2.getCell(j, 7).getValue()); 
     range2.getCell(j,1).setValue("Script") 
     teller++; 
     } 
    } 
    } 
    Logger.log(teller); 

}; 

답변

1

SpreadsheetApp API를 너무 많이 사용한다고 상상해보십시오. 가장 좋은 방법은 필요한 데이터를 스크립트에로드하고이를 반복하는 것입니다. 스크립트를 예로 사용하면 다음과 같습니다.

function start() { 
    var sheet1 = SpreadsheetApp.openByUrl("xx").getSheetByName('Blad1'); 
    var sheet2 = SpreadsheetApp.openByUrl("xx").getSheetByName('Blad1'); 
    var range1 = sheet1.getRange(1,1,54,26); 
    var range2 = sheet2.getRange(1,1,10,7); 
    var data1 = range1.getValues(); 
    var data2 = range2.getValues(); 
    var teller = 0; 

    for(var i = 0, r = data1.length; i < r; i++){ 
    for(var j = 1, c = data2.length; j < c; j++){ 
     Logger.log(i); 
     Logger.log(j); 
     if(data1[i, 8] == data2[j, 2] && data1[i, 16] == data2[j, 4] && data1[i, 19] == data2[j, 6]){ 
     range1.getCell(i,25).setValue(data2[j, 7]); 
     range2.getCell(j,1).setValue("Script") 
     teller++; 
     } 
    } 
    } 
    Logger.log(teller); 
}; 
+0

그 트릭을 수행했습니다! 완벽 해, 고마워. – tortilla