2012-06-18 4 views
0

Я пытаюсь импортировать дополнительные письма, сообщения и время отправки всех сообщений с определенным ярлыком, у меня более 1300 сообщений на этом ярлыке.spreedsheet срок действия сценария

До сих пор я делал их на 100 сообщений, каждый прогон, потому что вот что я увидел предел был, , но теперь, после импорта 500 строк, мой сценарий купировались работает и дал мне

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

что мне делать? подождите два часа? подождать один день? запустите новый лист?

Спасибо, Лев

ответ

0

квота для чтения Gmail 10000/день (см 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) 

EDIT: Я не думаю, что ваш вопрос о пределах, появляется сообщение об ошибке я думаю 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

Смежные вопросы