תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    גוגל סקריפט | כניסה לקישור בקבלת מייל

    תכנות
    2
    9
    256
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מוטי מן
      מוטי מן נערך לאחרונה על ידי מוטי מן

      אני רוצה שבכל פעם שמגיע לי מייל לתווית "א" תהיה גלישה לקישור מסוים שבעצם גורם לרישום כלשהו באיזה מקום.

      אז התחלתי עם זה:
      א. יצרתי תווית עם מסנן במייל בשם A.
      ב. סימנתי לסקריפט איך למצוא את המיילים הללו...

      function linka() {
        var label = GmailApp.getUserLabelByName('a');
        var messages = label.getThreads();
      

      עשיתי נכון?

      אם כן, איך אני מתקדם? (ללמד אותי, לא לגלות 🙂 )

      .

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

      chv תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • chv
        chv @מוטי מן נערך לאחרונה על ידי

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

        בנוגע לאיך לעשות שיהיה 'גלישה לקישור מסוים' (או בעברית - שליחת בקשה לכתובת HTTP) - יש לזה מחלקה שלמה שמתפקדת בדומה (לא דומה לגמרי) ל-FETCH הקלאסי מ-JS:
        https://developers.google.com/apps-script/reference/url-fetch

        דוגמא לשליחת fetch + הגדרות - כגון method - POST וכו'
        https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchurl,-params

        בלוג | מייל

        מוטי מן תגובה 1 תגובה אחרונה תגובה ציטוט 2
        • מוטי מן
          מוטי מן @chv נערך לאחרונה על ידי מוטי מן

          @chv עשיתי את זה ככה, והוא טוען שיש שגיאת תחביר בשורה 6, מה זה יכול להיות?

          שגיאת תחביר: SyntaxError: Unexpected token ';' שורה: 6 קובץ: קוד.gs
          
          function linka() {
            var label = GmailApp.getUserLabelByName('a');
            var messages = label.getThreads();
            for (var response = UrlFetchApp.fetch('http://www.google.com/');
          Logger.log(response.getContentText());
              messages[i].removeLabel(label);
            }
          }
          

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

          chv תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • chv
            chv @מוטי מן נערך לאחרונה על ידי chv

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

            עשיתי לך קוד לדוגמא למקרה שאתה רוצה שעל כל מייל ייכנס לקישור (ככה נראה שרצית כי ניסת לעשות איזה לופ שם):

            function linka() {
                var label = GmailApp.getUserLabelByName('a')
                var messages = label.getThreads()
                if (messages.lenght > 0) {
                    for (var message of messages) {
                        var request = UrlFetchApp.fetch('http://www.google.com/')
                        Logger.log(request.getContentText())
                        message.removeLabel(label)
                    }
                }
            

            זה כולל תנאי אם יש מיילים בתווית

            עריכה - היה טעות בקוד (בשורה 4 הבדיקה הייתה על האורך של האובייקט label במקום על האורך של המערך messages)

            בלוג | מייל

            מוטי מן תגובה 1 תגובה אחרונה תגובה ציטוט 2
            • מוטי מן
              מוטי מן @chv נערך לאחרונה על ידי מוטי מן

              @chv שכחת בסוף { אחד 🙂

              למעשה, זה נכון? איפה כתוב לשלוח על כל הודעה, ואיך זה לשלוח אחד על הכל?

              function linka() {
              // בחירת התווית
                  var label = GmailApp.getUserLabelByName('a')
              // בחירת השיחות בתווית שצוינה לעיל
                  var messages = label.getThreads()
              // התנאי
                  if (messages.lenght > 0) {
              //בהינתן ואין הודעות
                      for (var message of messages) {
              // בהינתן ויש הודעות
                          var request = UrlFetchApp.fetch('http://www.google.com/')
              // רישום בלוג
                          Logger.log(request.getContentText())
              // מחיקת התווית מההודעות
                          message.removeLabel(label)
                      }
                  }
              }
              

              תודה!

              chv תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • chv
                chv @מוטי מן נערך לאחרונה על ידי chv

                @מוטי-מן קצת יותר מדויק:

                function linka() {
                    // יצירת משתנה שמכיל את התווית
                    var label = GmailApp.getUserLabelByName("a")
                    // בחירת השיחות שמכילות את התווית שצוינה לעיל
                    var messages = label.getThreads()
                    // התנאי - אם המערך שאמור להכיל את השיחות גדול מ-0
                    if (messages.length > 0) {
                        // בהינתן ויש הודעות במערך, הרצה של לולאה שתבצע פרוצדורה על כל הודעה
                        for (var message of messages) {
                            // יצירת בקשה לרשת ואחסון שלה במשתנה
                            var request = UrlFetchApp.fetch("http://www.google.com/")
                            // רישום של התשובה לבקשה ללוג
                            Logger.log(request.getContentText())
                            // מחיקת התווית מההודעה
                            message.removeLabel(label)
                        }
                    }
                }
                

                וזה שולח בקשה אחת (כלומר לא מתעסק עם לולאה על כל ההודעות):

                function linka() {
                  // יצירת משתנה שמכיל את התווית
                  var label = GmailApp.getUserLabelByName("a")
                  // בחירת השיחות שמכילות את התווית שצוינה לעיל
                  var messages = label.getThreads()
                  // התנאי - אם המערך שאמור להכיל את השיחות גדול מ-0
                  if (messages.length > 0) {
                    // בהינתן ויש הודעות במערך, הרצה של פרוצדורה דלהלן
                    // יצירת בקשה לרשת ואחסון שלה במשתנה
                    var request = UrlFetchApp.fetch("https://hookb.in/G9OYJqLZQpIWGGeQq182")
                    // רישום של התשובה לבקשה ללוג
                    Logger.log(request.getContentText())
                    // מחיקת התווית ממערך ההודעות
                    messages.forEach(function (entry) {
                      entry.removeLabel(label)
                    })
                  }
                }
                

                בלוג | מייל

                מוטי מן תגובה 1 תגובה אחרונה תגובה ציטוט 1
                • מוטי מן
                  מוטי מן @chv נערך לאחרונה על ידי

                  @chv זה לא עושה כלום. יש לי כרגע 2 הודעות בתווית הזו, ולא קורה שום דבר ההפעלה מתחילה ומסתיימת תוך פחות משניה ושום דבר לא קורה.

                  chv תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • chv
                    chv @מוטי מן נערך לאחרונה על ידי

                    @מוטי-מן צודק... הייתה לי טעות כתיב (כתבתי lenght במקום length.. זה לא היה קורה לי אם הייתי כותב אנגלית כשפת אם, אבל מה לעשות..)
                    עכשיו יעבוד לך לכאורה

                    בלוג | מייל

                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • chv
                      chv נערך לאחרונה על ידי

                      ואגב היה לי עוד טעות. חשבתי שגוגל יצרו שיוך של אובייקטי ההודעות שבתוך מערך הודעות. כלומר חשבתי שאפשר להריץ שורה כזו על מערך הודעות:

                      messages.removelabel(label)
                      

                      מתברר שלא.. אז צריך לעבור בלופ על כל אחת מההודעות במערך ולהסיר את התווית מאובייקט ההודעה עצמו.
                      אפשר לעשות את זה פשוט עם forEach ככה -

                      function linka() {
                        // יצירת משתנה שמכיל את התווית
                        var label = GmailApp.getUserLabelByName("a")
                        // בחירת השיחות שמכילות את התווית שצוינה לעיל
                        var messages = label.getThreads()
                        // התנאי - אם המערך שאמור להכיל את השיחות גדול מ-0
                        if (messages.length > 0) {
                          // בהינתן ויש הודעות במערך, הרצה של פרוצדורה דלהלן
                          // יצירת בקשה לרשת ואחסון שלה במשתנה
                          var request = UrlFetchApp.fetch("https://hookb.in/G9OYJqLZQpIWGGeQq182")
                          // רישום של התשובה לבקשה ללוג
                          Logger.log(request.getContentText())
                          // מחיקת התווית ממערך ההודעות
                          messages.forEach(function (entry) {
                            entry.removeLabel(label)
                          })
                        }
                      }
                      

                      כמו שאתה רואה השתמשתי ב- hookbin.com לבדוק את הבקשה שמתקבלת מגוגל סקריפט

                      בלוג | מייל

                      תגובה 1 תגובה אחרונה תגובה ציטוט 3
                      • הועבר מ תכנות ע"י  dovid dovid 
                      • 1 / 1
                      • פוסט ראשון
                        פוסט אחרון
                      בא תתחבר לדף היומי!