2012-06-18 5 views
0

spreedsheet 메일 addreses, 메시지 및 특정 레이블이있는 모든 메시지의 전송 시간을 가져 오려고하면 해당 레이블에 1300 개가 넘는 메시지가 있습니다. 내가 한도는 이었다보고 그게 무엇 때문에spreedsheet 스크립트 시간 제한

지금까지 내가, 100 메시지에 의해 각각의 실행을하고 있었다 그러나 지금, 500 개 행을 가져온 후, 내 스크립트가 들렸다 작업과 나에게

"TypeError: Cannot call method "getMessages" of undefined. (Línea 19)Ignorar"

했다 나는 어떻게해야합니까? 2 시간 기다려? 하루 만 기다려? 새 스프레드 시트를 시작 하시겠습니까?

감사합니다, 레오

답변

0

의 Gmail 읽기에 대한 할당량은 10,000/일 (quotas on the dashboard 참조). 다른 곳에서 오류가 발생하지 않았습니까? 사용하는 코드를 제공 할 수 있습니까?

귀하의 의견 (코드 정보 주셔서 감사) 다음과 같은 많은 setValue() 피할 수있는 속도를 제안합니다. 많은 시간이 걸립니다 ...이 대신 시도하십시오 : (코드에서 관련 부분을 바꿉니다)

var sheet = SpreadsheetApp.getActiveSheet(); 
    var toShow=new Array() 
    for (var i = 502; i < 550; i++) { 
    var myThread = GmailApp.search("is:w-destino-mensajes")[i]; 
    if(myThread.length>0){ 
    var message = myThread.getMessages()[0]; 
    toShow.push([message.getDate(),message.getFrom(),message.getBody()]); 
} 
    } 
    sheet.getRange(startRow,2,toShow.length,toShow[0].length).setValues(toShow) 

편집 : 내가 myThread 어떤 경우에는 빈 값을 반환하고 오류를 생성 추측 오류 메시지가 표시하여 문제가 한계에 대해 생각하지 않습니다. getMessages를 시도하기 전에 존재 조건을 추가하려고 할 수 있습니다 (위의 코드 참조).

+0

스크립트가 정상적으로 작동 했으므로 예외 코드를 실행할 때마다 반복 인덱스 번호 만 변경하고있었습니다. – leofishman

+0

var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; //for (var i = 0; i < threads.length; i++) { for (var i = 502; i < 550; i++) { var myThread = GmailApp.search("in:w-destino-mensajes")[i]; var message = myThread.getMessages()[0]; sheet.getRange(startRow + i, 2).setValue(message.getDate()); sheet.getRange(startRow + i, 3).setValue(message.getFrom()); sheet.getRange(startRow + i, 4).setValue(message.getBody()); SpreadsheetApp.flush(); } leofishman

+0

여전히 같은 오류가 있습니다. 스프레드 시트의 한도에 도달했을 수 있습니다. 내일 스크립트를 테스트해야합니다. – leofishman