שיתוף | קבצים מצורפים במייל לדרייב
-
בעז"ה
מייל לדרייב
בעת קבלת מייל חדש המערכת מכניסה את הקבצים המצורפים לתיקיה בדרייב
מבנה התיקיות הוא כך
מייל לדרייב > [שולח] > [תאריך קבלת המייל] ([מספר הקבצים המצורפים]) > [קבצי המייל]אשמח מאוד לקבל הערות ורשמים (אפשר כאן או במייל pnhspnhs29@gmail.com)
בתחתית הגליון יש קישורים לכל מיני אתרים שאם נכנסים אליהם החברות משלמות לי
בהצלחה
הדרכה
הדרכה להתקנת הסקריפט
נכנסים לכאן ייפתח חלון שיישאל אתכם אם ליצור עותק, יש ללחוץ על יצירת עותק
לאחר יצירת העותק ייפתח חלון של Google Sheets (אקסל של גוגל), יש ללחוץ בסרגל הכלים מייל לדרייב > הפעלה ראשונית (או על כפתור טיפול בהכל)
יפתח לנו חלונית חדשה שתבקש שניכנס עם החשבון גוגל שלנו, ואז יופיע אזהרה שגוגל לא אימתה את האפליקציה הזו, נלחץ על מתקדם ואז על כניסה אל mailToDrive (לא מאובטח) וכן לאשר גם את החלונות שייקפצו בהמשך (הדבר מאובטח בהחלט אתם היחידים ששולטים על הסקריפט)
אם הסקריפט עדיין לא הופעל יש להפעיל אותו שוב
כעת יש לנו מערכת מוכנה שתכניס את הקבצים המצורפים לדרייב
הסקריפט הוא שינוי מסקריפט מייל לפלאפון ושם יש הדרכה מפורטת יותר
הערות
הערות
- אפשר לבחור איזה מיילים יחופשו על ידי הסקריפט בכרטיסיה הגדרות
הדרכה לחיפוש במייל - בגלל באג של גוגל בטעינה בפעם הראשונה הסקריפט לא מופעל
אם לא קיבלתם הודעה קופצת בצד שמאל למטה שהסקריפט הופעל - הסקריפט לא הופעל ויש להפעילו שוב - הערה למי שצריך גוגל סקריפט לא תומך בחשבונות גוגל מרובים
- אפשר לבחור איזה מיילים יחופשו על ידי הסקריפט בכרטיסיה הגדרות
-
@מנצפכ עשיתי ככה
const sheet = SpreadsheetApp.getActive(); const ss = SpreadsheetApp.getActiveSpreadsheet(); const ScriptProperties = PropertiesService.getScriptProperties(); const MainSheet = sheet.getSheetByName('מייל לדרייב'); const SettingsSheet = sheet.getSheetByName('הגדרות'); const IdSheetSentEvenDay = sheet.getSheetByName('כתובות id שנשלחו ביום זוגי'); const IdSheetSentOddDay = sheet.getSheetByName('כתובות id שנשלחו ביום אי זוגי'); const SettingsValues = SettingsSheet.getRange('B:B').getValues(); const DeleteSheets = SettingsValues[1][0]; const SearchWords = SettingsValues[3][0]; const WordsExclude = SettingsValues[4][0]; const SearchByGmail = `${SearchWords} newer_than:1h -{in:draft ${WordsExclude}}` const HourAgo = new Date(Date.now()); function mailToDrive() { const EvenOrOdd = new Date().getDay() % 2; const SheetToday = EvenOrOdd === 1 ? IdSheetSentEvenDay : IdSheetSentOddDay; const LastRowEvenDay = IdSheetSentEvenDay.getLastRow(); const LastRowOddDay = IdSheetSentOddDay.getLastRow(); const SourceValuesEvenDay = IdSheetSentEvenDay.getRange(`A2:A${LastRowEvenDay}`).getValues(); const SourceValuesOddDay = IdSheetSentOddDay.getRange(`A2:A${LastRowOddDay}`).getValues(); console.log(SearchWords); // const Threads = GmailApp.search(SearchByGmail); const Threads = GmailApp.search(SearchWords); Logger.log(Threads.length) for (const thread of Threads) { const Messages = thread.getMessages(); for (const message of Messages) { if ( SourceValuesEvenDay.findIndex(e => e[0] === message.getId()) !== -1 || SourceValuesOddDay.findIndex(e => e[0] === message.getId()) !== -1) { continue; } sendToDrive(message); message.markRead(); SheetToday.getRange(SheetToday.getLastRow() + 1, 1).setNumberFormat("@").setValue(message.getId()); SpreadsheetApp.flush(); } } } function sendToDrive(message) { const attachments = message.getAttachments(); if (attachments.length === 0) { return; } let mainFolder = DriveApp.getFoldersByName("דרייב"); if (mainFolder.hasNext()) { mainFolder = mainFolder.next() } else { mainFolder = DriveApp.createFolder("דרייב"); } attachments.forEach(attachment => { if (attachment.getContentType() == "video/mp4") { mainFolder.createFile(attachment.copyBlob()); } }); }
(הכל נכנס בתיקייה אחת עם השם המקורי - והקוד מבוצע גם על הקבצים הישנים - ורק ע קבצי וידאו)
אבל מאוד הרבה קבצים נהיים לי כפול - בהפעלה אחת
למה? -
@שמואל-ש כתב בשיתוף | קבצים מצורפים במייל לדרייב:
@מנצפכ 1.אפשר רק קבצים מסויימים - למשל רק וידאו?
2.אפשר שייכנס לתיקייה הראשית של "מייל לדרייב" ולא יתחלק לתת תיקיות לכל מייל?אין לי עניין לפתח את זה יותר ממה שהוא
פתחתי את זה עבור מישהו שהיה לו צורך בזה איך שהוא עכשיו@שמואל-ש כתב בשיתוף | קבצים מצורפים במייל לדרייב:
@מנצפכ עשיתי ככה
const sheet = SpreadsheetApp.getActive(); const ss = SpreadsheetApp.getActiveSpreadsheet(); const ScriptProperties = PropertiesService.getScriptProperties(); const MainSheet = sheet.getSheetByName('מייל לדרייב'); const SettingsSheet = sheet.getSheetByName('הגדרות'); const IdSheetSentEvenDay = sheet.getSheetByName('כתובות id שנשלחו ביום זוגי'); const IdSheetSentOddDay = sheet.getSheetByName('כתובות id שנשלחו ביום אי זוגי'); const SettingsValues = SettingsSheet.getRange('B:B').getValues(); const DeleteSheets = SettingsValues[1][0]; const SearchWords = SettingsValues[3][0]; const WordsExclude = SettingsValues[4][0]; const SearchByGmail = `${SearchWords} newer_than:1h -{in:draft ${WordsExclude}}` const HourAgo = new Date(Date.now()); function mailToDrive() { const EvenOrOdd = new Date().getDay() % 2; const SheetToday = EvenOrOdd === 1 ? IdSheetSentEvenDay : IdSheetSentOddDay; const LastRowEvenDay = IdSheetSentEvenDay.getLastRow(); const LastRowOddDay = IdSheetSentOddDay.getLastRow(); const SourceValuesEvenDay = IdSheetSentEvenDay.getRange(`A2:A${LastRowEvenDay}`).getValues(); const SourceValuesOddDay = IdSheetSentOddDay.getRange(`A2:A${LastRowOddDay}`).getValues(); console.log(SearchWords); // const Threads = GmailApp.search(SearchByGmail); const Threads = GmailApp.search(SearchWords); Logger.log(Threads.length) for (const thread of Threads) { const Messages = thread.getMessages(); for (const message of Messages) { if ( SourceValuesEvenDay.findIndex(e => e[0] === message.getId()) !== -1 || SourceValuesOddDay.findIndex(e => e[0] === message.getId()) !== -1) { continue; } sendToDrive(message); message.markRead(); SheetToday.getRange(SheetToday.getLastRow() + 1, 1).setNumberFormat("@").setValue(message.getId()); SpreadsheetApp.flush(); } } } function sendToDrive(message) { const attachments = message.getAttachments(); if (attachments.length === 0) { return; } let mainFolder = DriveApp.getFoldersByName("דרייב"); if (mainFolder.hasNext()) { mainFolder = mainFolder.next() } else { mainFolder = DriveApp.createFolder("דרייב"); } attachments.forEach(attachment => { if (attachment.getContentType() == "video/mp4") { mainFolder.createFile(attachment.copyBlob()); } }); }
(הכל נכנס בתיקייה אחת עם השם המקורי - והקוד מבוצע גם על הקבצים הישנים - ורק ע קבצי וידאו)
אבל מאוד הרבה קבצים נהיים לי כפול - בהפעלה אחת
למה?אני לא יודע
לא עברתי על הקוד שלך -
@שמואל-ש כתב בשיתוף | קבצים מצורפים במייל לדרייב:
@מנצפכ 1.אפשר רק קבצים מסויימים - למשל רק וידאו?
תעקוב אחרי החיפוש בממשק של המייל ותוכל לחקות אותו
לדוגמה החיפוש הזה:
הוא בעצם:has:attachment has:video
אפשר כמובן לפלטר את ההודעות עצמן עם קוד אבל זה יותר מהיר, גם לפיתוח וגם במשאבי זמן ריצה