בירור | איך להוציא קובץ עם כל מי ששלח אלי / קיבל ממני מייל
-
היי שלום
פרסמתי על כך שמי שרוצה להכנס לרשימת התפוצה שלי יכול לשלוח לי מייל
מאות פנו אלי ואין לי כח עכשיו להעתיק מייל מייל
האם אני יכול לייצא את כל המילים שכתבו לי או שכתבתי להם מייל אי פעם? -
@שמעון-חבצלת אפשרי בהחלט, כבר אעלה לך קוד קטן שעושה את זה
-
@שמעון-חבצלת מצורף הקוד, צור קובץ גוגל שיטס חדש, תשנה את שם הגיליון ל"כתובות", לאחמ"כ תפתח בתפריט העליון את תוספים > 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 פעמים?)