for 루프는 실제로 문제가 발생합니다 (문제가 있습니까?).for 루프가 변수를 값으로 사용하지 않는 이유는 무엇입니까?
- GmailApp.getInboxThreads (k, max) [k]; 그러나 이것은 모든 다른 스레드를 건너 뛰었습니다. (이유를 말해 줄 수 있습니까?)
-이 경우는 k = 0이고 최대 = 100 인 경우에만 작동합니다. k = 100 및 max = 100을 시도하면 빈 데이터 세트가 생깁니다. 실행 로그는 k = 100이고 max = 100 인 경우 for 루프가 완전히 건너 뛴다는 것을 보여줍니다.
미리 도움을 주셔서 감사합니다. 루프 while 루프에 엄격 같다는 것을
function newEmailAddressList(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("NewEmails");
var range = sheet.getRange("A3:Q");
var varRange = sheet.getRange("A2:G2");
var addrA = [];
range.clearContent(); //May need to change this to my delete function to speed things up.
var contact = ContactsApp.getContacts(); //var contact = ContactsApp.getContacts();
//////////
for(var i = 0; i < contact.length; i++){ //for(var i = 0;i < contact.length;i++){
//var addrA = []; //var addrA = []; This can't be here. It is not global or accessable if it is in this loop and the other global version doesn't access it apparently
var addresses = contact[i].getEmails(); // var addresses = contact[i].getEmails();
for(var j = 0;j < addresses.length; j++){ //for(var j = 0;j < addresses.length;j++) {
var address = addresses[j].getAddress(); // s += addresses[j].getAddress() + br;
addrA.push(address); //
};
}; /////////////////////AT THIS POINT CONTACTS ARRAY IS COMPLETE/////////////////////////
var joinAddr = addrA.join();
//var lowerAddr = joinAddr.toLowerCase();
var startingEmail = sheet.getRange("C2").getValue();
var numEmails = sheet.getRange("E2").getValue();
var max = numEmails;
for (var k = startingEmail; k<max; ++k){
var threads = GmailApp.getInboxThreads()[k]; //get max threads starting at most recent thread
var messages = threads.getMessages()[0];
var sndr;
var rcpnt;
var srAry = [];
var sndr = messages.getFrom().replace(/^.+<([^>]+)>$/, "$1"); //http://stackoverflow.com/questions/26242591/is-there-a-way-to-get-the-specific-email-address-from-a-gmail-message-object-in
var sndrLower = sndr.toLowerCase;
var rcpnt = messages.getTo().replace(/^.+<([^>]+)>$/, "$1");
var rcpntLower = rcpnt.toLowerCase;
var cc = messages.getCc().replace(/^.+<([^>]+)>$/, "$1");
var ccLower = cc.toLowerCase;
//srAry.push(sndr);
//srAry.push(rcpnt);
//srAry.push(cc);
var isIn = joinAddr.search(sndr || rcpnt);
if(isIn == -1){
var instance = k;
var dat = messages.getDate();
//var sndr = messages.getFrom();
//var rcpnt = messages.getTo();
var sub = messages.getSubject();
var msg = messages.getPlainBody();
var info = [instance,dat,sndr,rcpnt,cc,sub,msg];
sheet.appendRow(info); //appendRow only works with sheet class not range class
};//else{ break; };
};
//Browser.msgBox(("Here are your New Contacts from Emails "k" through "k + max"!"));
getContactGroups();
};
감사합니다 !!! k = 0로 유지하면 문제가 해결됩니다. 이 전이나 루프 후 "gmailApp.GetInboxThreads을 가지고 잘 작동 않습니다 VAR joinAddr = addrA.join(); // var에 lowerAddr = joinAddr.toLowerCase(); :이 같은 코드를 유지 한? VAR startingEmail = sheet.getRange ("C2") getDisplayValue(). VAR의 numEmails = sheet.getRange ("E2") getDisplayValue(). VAR 최대 = numEmails (VAR의 K = 0 는 k 번째 (0); – Clayten
(0); var threads = GmailApp.getInboxThreads (startingEmail, max) [k]; // 가장 최근 스레드에서 최대 50 개의 스레드를 가져옵니다. 전에, 당신이 다시 루프에 있기 때문에 그것은 전에 있어야만합니다. 전화의 성도 – Yoann
이 문제에 대한 의견이 있으십니까? http://stackoverflow.com/questions/42615392/transient-errors-skipping-blank-cells-with-if-clause – Clayten