סקריפט נחמד ששיתפו אותי | סידור כל המיילים בתיבת ג'ימייל לפי גודל



  • שלום לכל שוכני הפורום הזה..
    אני כותב כאן את הפוסט בעיקר בגלל ש @פישל דחף אותי לזה. באמת עכשיו שאני חושב על זה יכול להיות באמת הרבה תועלת בזה לאנשים שהמייל שלהם מתפקע..

    אוקיי אז ככה - אחד בשם Amit Agarwal (זה האתר שלו - https://www.labnol.org/) יצר סקריפט של גוגל אפס (google apps) עם התממשקות לsheets וכמובן לתיבת הגימייל. הסקריפט סורק את תיבת הגימייל ומחפש אחרי כל ההודעות שהן בנות יותר ממגה-בייט אחד.

    את כל ההודעות הנ"ל הוא מסדר בטבלת שיטס, עם טורים - שולח, נושא, תאריך, גודל - ולינק להודעה (נחמד מאוד!).

    כמובן שאחרי שיש כזו טבלה, אפשר למיין אותה בשיטס לפי עמודות כלומר נגיד אפשר לעשות שייסדר את כל הטבלה לפי העמודה של גודל ההודעה, מלמעלה למטה וכו'. וכך אפשר להתחיל לרוקן את המייל בצורה נוחה יותר.

    אני יכתוב את הסקריפט עצמו בסוף הפוסט, למעוניינים לעיין. כעת אכתוב איך עושים את זה ואיך זה עובד:

    דבר ראשון כנסו למסמך הזה: https://docs.google.com/spreadsheets/d/1Hgbk4oUSOHcUkfyRMbHZdHOFyu34fVIfFqxyAJKiCbw/edit?usp=sharing
    כתבתי כבר בפנים את כל ההוראות (בצד שמאל). אני יכתוב גם כאן קצת, אבל הכי נורמלי תסתכלו שם.

    תיצרו עותק של המסמך אצלכם בחשבון.
    לאחר מכן כנסו לעותק שאצלכם (הדוקס אמור לעשות את זה אוטומטי) ותפעלו לפי ההוראות.
    תצטרכו לתת לו אישור Oauth לקרוא את תיבת הגימייל. (הוא יכתוב שזה לא תוכנה מאומתת וכו', לא להתייחס, ללחוץ לאשר)
    התהליך די קצר, אצלי לקח בערך עשר דקות.
    זה עושה הרבה הודעות שגיאה - בכל הודעה כזו - תלחצו עליה לסגור אותה, ואז ללחוץ שוב על הכפתור של הסריקה.

    אני מעתיק כאן את הסקריפט עצמו למי שרוצה (הסקריפט מוכנס בפלטפורמת הסקריפטים של google apps, בפורמט שלהם - gs) מה שמופיע שם בעברית זה תרגום שעשיתי לזה, כמובן במקור זה באנגלית וכו':

    /*************************************************************
    
                 Gmail Size by Digital Inspiration
                 ---------------------------------
    
                 tutorial   :   http://labnol.org/?p=21191
    
                 contact    :   [email protected]
                 twitter    :   @labnol
    
    **************************************************************/
    
    function Scanning_Gmail_Mailbox() {    
      
      if (!UserProperties.getProperty("start")) {
        UserProperties.setProperty("start", "0");    
      }
      
      var start   = parseInt(UserProperties.getProperty("start"));
      var sheet   = SpreadsheetApp.getActiveSheet();
      var row     = getFirstRow();
      var ss      = SpreadsheetApp.getActiveSpreadsheet()
      
      for (;;) {
      
      ss.toast("מחפש כעת את המיילים הגדולים בתיבת המייל שלך..", "הסריקה התחילה", -1);
      
      var threads = GmailApp.search('has:attachment', start, 100);
      
      if (threads.length == 0) {
        ss.toast("נמצאו " + start + " הודעות.", "הסריקה הושלמה", -1); 
        return;
      }
        
      for (var i=0; i<threads.length; i++) {
        
        var messages = threads[i].getMessages();
        UserProperties.setProperty("start", ++start);
        
        for (var m=0; m<messages.length; m++) {      
          
          var size = getMessageSize(messages[m].getAttachments());      
          
          if (size >= 1) {      
            sheet.getRange(row,1).setValue(Utilities.formatDate(messages[m].getDate(),"GMT", "yyyy-MM-dd"));
            sheet.getRange(row,2).setValue(messages[m].getFrom());        
            sheet.getRange(row,3).setValue(messages[m].getSubject());
            sheet.getRange(row,4).setValue(size);        
            var id = "https://mail.google.com/mail/u/0/#all/" + messages[m].getId();
            sheet.getRange(row,5).setFormula('=hyperlink("' + id + '", "View")'); 
            row++;
          }
        }            
      }    
     }
    }
    
    function getMessageSize(att) {
      var size = 0;
      for (var i=0; i<att.length; i++) {
        size += att[i].getBytes().length;
      }
      Utilities.sleep(1000);
      return Math.round(size*100/(1024*1024))/100;
    }
    
    function Clear_Canvas() {
      UserProperties.setProperty("start", "0");
      var sheet = SpreadsheetApp.getActiveSheet();
      sheet.getRange(2,1,sheet.getLastRow(), 5).clearContent();
      SpreadsheetApp.getActiveSpreadsheet().toast("לחץ סרוק את המייל כדי להמשיך..", "התהליך התחיל", -1);
    }
    
    function getFirstRow() {
      var sheet  = SpreadsheetApp.getActiveSpreadsheet();
      var values = sheet.getRange('A:A').getValues();
      var c = 2;
      while ( values[c][0] != "" ) {
        c++;
      }
      return c;
    }
    
    function onOpen() {  
      var menu = [    
        {name: "אתחל קנבס (HTML)", functionName: "Clear_Canvas"},
        {name: "סרוק את המייל", functionName: "Scanning_Gmail_Mailbox"}
      ];  
      SpreadsheetApp.getActiveSpreadsheet().addMenu("מיון הודעות מייל", menu);
    }
    

    אם אתם רוצים לשנות את הפרמטר - כלומר נגיד אתם רוצים שרק מ-4 מגה-בייט הוא ימצא הודעות - תשנו את השורה הזו בקוד (שורה 44):

    if (size >= 1) {
    

    במקום הספרה 1 תשימו כמה מגה-בייט שאתם רוצים.
    בהצלחה!!



  • @chv כמו תמיד אין עליך!!
    👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍 👍



  • זה באמת מאוד נחמד אבל בשביל לפנות שטח במייל אפשר פשוט
    https://mail.google.com/mail/u/0/#advanced-search/subset=all&within=1d&size=10&sizeoperator=s_sl&sizeunit=s_smb
    (חיפוש במייל של כל העולה על 10 מגה)
    חיפוש במייל>אפשרויות מתקדמות>גדול מ-"" מ"ב\ק"ב

    @chv אמר בסקריפט נחמד ששיתפו אותי | סידור כל המיילים בתיבת ג'ימייל לפי גודל:

    יכול להיות באמת הרבה תועלת בזה לאנשים שהמייל שלהם מתפקע

    עריכה: עכשיו אחרי שעשיתי את זה זה באמת יותר נוח שהוא כותב לך כמה מגה זה כל אחד



  • @chv לך זה עובד?
    אני מריץ את זה כבר למעלה מחצי שעה
    וחוץ מכל 10 דקות כיתוב חריגה מזמן הביצוע המרבי הוא מצא לי 20 הודעות



  • @A0533057932 לי זה עבד גמר את הסריקה בפחות מעשר דקות.
    גם לי זה עשה שגיאות (זה בגלל שיש הרבה בקשות מהסקריפט וגוגל מגבילים את הקריאות בעיקרון. אם היה משקיע יותר במיתון הסקריפט זה היה בכלל מושלם. אבל..) פשוט סוגרים את השגיאות ונותנים לו לסרוק שוב.



  • פוסט זה נמחק!


  • @chv אמר בסקריפט נחמד ששיתפו אותי | סידור כל המיילים בתיבת ג'ימייל לפי גודל:

    כמובן שאחרי שיש כזו טבלה, אפשר למיין אותה בשיטס לפי עמודות כלומר נגיד אפשר לעשות שייסדר את כל הטבלה לפי העמודה של גודל ההודעה, מלמעלה למטה וכו'. וכך אפשר להתחיל לרוקן את המייל בצורה נוחה יותר.

    איך עושים את זה ?



  • @מעמד אמר בסקריפט נחמד ששיתפו אותי | סידור כל המיילים בתיבת ג'ימייל לפי גודל:

    @chv אמר בסקריפט נחמד ששיתפו אותי | סידור כל המיילים בתיבת ג'ימייל לפי גודל:

    כמובן שאחרי שיש כזו טבלה, אפשר למיין אותה בשיטס לפי עמודות כלומר נגיד אפשר לעשות שייסדר את כל הטבלה לפי העמודה של גודל ההודעה, מלמעלה למטה וכו'. וכך אפשר להתחיל לרוקן את המייל בצורה נוחה יותר.

    איך עושים את זה ?

    כנס לקישור לקובץ שהוא העלה יש שם הוראות מאוד ברורות [אם יש בעות אני מאמין שישמחו לעור כאן]
    בהצלחה



  • @מעמד תלחץ בראש העמודה של הגודל הודעה, יש חץ קטן משולש כזה, ואז מיין מת' עד א'.