בירור | איך להוציא קובץ עם כל מי ששלח אלי / קיבל ממני מייל
-
@שמעון-חבצלת מצורף הקוד, צור קובץ גוגל שיטס חדש, תשנה את שם הגיליון ל"כתובות", לאחמ"כ תפתח בתפריט העליון את תוספים > apps script תמחק את הקוד הראשוני ותדביק את הקוד הזה ותפעיל.
זה יעבוד רק לשרשורים בדואר הנכנס.
function exportEmails() { let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; sheet.clear(); sheet.appendRow(["כתובת אימייל", "שם השולח", "נושא", "תוויות", "תאריך שליחה", "איידי ההודעה"]); let maxThreads = 500; let start = 0; while (true) { let threads = GmailApp.getInboxThreads(start, maxThreads); if (threads.length == 0) { break; } for (let i = 0; i < threads.length; i++) { let messages = threads[i].getMessages(); for (let j = 0; j < messages.length; j++) { let email = messages[j]; let fromField = email.getFrom(); let matches = fromField.match(/"?(.*?)"?\s*<(.+?)>/); let name = matches && matches[1] ? matches[1] : ''; let emailAddress = matches && matches[2] ? matches[2] : fromField; let subject = email.getSubject(); let threadLabels = threads[i].getLabels(); let labelNames = []; for (let k = 0; k < threadLabels.length; k++) { labelNames.push(threadLabels[k].getName()); } let labels = labelNames.join(', '); let date = email.getDate(); let id = email.getId(); let formattedDate = Utilities.formatDate(date, 'GMT', 'yyyy-MM-dd HH:mm:ss'); sheet.appendRow([emailAddress, name, subject, labels, formattedDate, id]); } } start += maxThreads; } }
-
@שמעון-חבצלת אתה בטוח שיש לך גיליון בשם "כתובות" בגוגל שיטס?
עכ"פ עדכנתי את הקוד למעלה וכעת זה יעבוד ללא קשר לשם הגיליון, וכן יעבוד על יותר מ500 ההודעות האחרונות.
-
מצורף קוד מעודכן שאמור להציג גם שיפור בביצועים (כי הרישום לאקסל נעשה רק כל 100 הודעות),
לשינוי לדואר יוצא, יש למחוק את ה"//" בשורה 13 ולרשום אותם בתחילת שורה 12 ולהיפך.
function exportEmails() { let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; sheet.clear(); sheet.appendRow(["כתובת שולח", "שם השולח", "כתובת נמען", "שם הנמען", "נושא", "תוויות", "תאריך שליחה", "איידי ההודעה"]); let maxThreads = 500; let start = 0; let dataRows = []; while (true) { let threads = GmailApp.getInboxThreads(start, maxThreads); //let threads = GmailApp.search("in:sent", start, maxThreads); if (threads.length == 0) { break; } for (let i = 0; i < threads.length; i++) { let messages = threads[i].getMessages(); for (let j = 0; j < messages.length; j++) { let email = messages[j]; let fromField = email.getFrom(); let matches = fromField.match(/"?(.*?)"?\s*<(.+?)>/); let name = matches && matches[1] ? matches[1] : ''; let emailAddress = matches && matches[2] ? matches[2] : fromField; let toField = email.getTo(); let matchesTo = toField.match(/"?(.*?)"?\s*<(.+?)>/); let nameTo = matchesTo && matchesTo[1] ? matchesTo[1] : ''; let emailAddressTo = matchesTo && matchesTo[2] ? matchesTo[2] : toField; let subject = email.getSubject(); let threadLabels = threads[i].getLabels(); let labelNames = []; for (let k = 0; k < threadLabels.length; k++) { labelNames.push(threadLabels[k].getName()); } let labels = labelNames.join(', '); let date = email.getDate(); let id = email.getId(); let formattedDate = Utilities.formatDate(date, 'GMT', 'yyyy-MM-dd HH:mm:ss'); dataRows.push([emailAddress, name, emailAddressTo, nameTo, subject, labels, formattedDate, id]); if (dataRows.length >= 100) { sheet.getRange(sheet.getLastRow() + 1, 1, dataRows.length, 8).setValues(dataRows); dataRows = []; } } } start += maxThreads; } if (dataRows.length > 0) { sheet.getRange(sheet.getLastRow() + 1, 1, dataRows.length, 8).setValues(dataRows); } }
-
@אביי כתב בבירור | איך להוציא קובץ עם כל מי ששלח אלי / קיבל ממני מייל:
getSheets
ניסתי גם אני עם הקוד הזה וזה התוצאה
-
@שעטנ-ז-ג-ץ זה צריך להיות סקריפט מואגד לקובץ גוגל שיטס
צור קובץ גוגל שיטס חדש,
תשנה את שם הגיליון ל"כתובות",לאחמ"כ תפתח בתפריט העליון את תוספים > apps script תמחק את הקוד הראשוני ותדביק את הקוד הזה ותפעיל. -
@אביי כתב בבירור | איך להוציא קובץ עם כל מי ששלח אלי / קיבל ממני מייל:
@שעטנ-ז-ג-ץ זה צריך להיות סקריפט מואגד לקובץ גוגל שיטס
צור קובץ גוגל שיטס חדש,
תשנה את שם הגיליון ל"כתובות",לאחמ"כ תפתח בתפריט העליון את תוספים > apps script תמחק את הקוד הראשוני ותדביק את הקוד הזה ותפעיל.גם זה עשיתי ואותו שגיאה
-
@שעטנ-ז-ג-ץ רוצה להביא לינק למה שעשית? כי אצלי זה עובד מעולה, וכעת יצרתי קובץ חדש בדיוק לפי ההוראות שהבאתי לעיל וזה עובד אצלי מצויין.
-
@שמעון-חבצלת אם אפשר קצת הסבר מה זה עושה (אם מישהו שלח לי מייל 5 פעמים הוא יקבל את זה 5 פעמים?)