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

    תגובה: מודול הרשמה לרשימת תפוצה

    עזרה הדדית למשתמשים מתקדמים
    3
    19
    20
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • פ
      פיתה @אA נערך לאחרונה על ידי

      @אA
      נירא לי שתנסה דרך אחרת........
      או מישהו אחר.......

      צילום מסך 2025-11-13 234109.png

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

        @אA למה שלא יעבוד? זה לא קשור לשרת שלו או מהו, סתם גוגל סקריפט

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

          @אA כתב בתגובה: מודול הרשמה לרשימת תפוצה:

          https://f2.freeivr.co.il/topic/10745/מודל-הרשמה-לרשימת-תפוצה-במייל

          @מיכאלוש אשמח לדעת האם זה עדיין פעיל.
          כרגע לא עובד לי.

          לא עובד כנראה בגלל שחסר שם חלק.

          תנסה את זה:

          /**
           * פונקציה זו מופעלת כאשר מתקבלת בקשת GET לכתובת ה-URL של ה-Web App.
           * היא מנהלת רשימת תפוצה ב-Google Contacts.
           * @param {Object} e - אובייקט האירוע המכיל את פרמטרי הבקשה.
           * @returns {ContentService.TextOutput} - אובייקט תגובה בפורמט JSON.
           */
          function doGet(e) {
            // קבלת הפרמטרים מכתובת ה-URL
            let email = e.parameters.P050;
            let name = e.parameters.Phone;
            let method = e.parameters.method;
            let tavit = 'רשימת תפוצה'; // שם קבוצת אנשי הקשר
          
            // בדיקת תקינות כתובת האימייל
            const validate = validateemail(email);
            if (validate === false) {
              Logger.log(`fake mail submitted...`);
              let result = { email: false, existed: false, created: false };
              // החזרת תשובה שהאימייל אינו תקין
              return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
            }
          
            // אם הפעולה היא הסרה
            if (method == 'remove') {
              try {
                let contact = ContactsApp.getContact(email);
                if (!contact) {
                  // אם איש הקשר לא נמצא
                  let result = { removed: false };
                  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
                } else {
                  // מחיקת איש הקשר
                  contact.deleteContact();
                  Logger.log(`user remove himself from list`);
                  let result = { removed: true };
                  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
                }
              } catch (err) {
                // טיפול בשגיאה אם איש הקשר לא נמצא (getContact זורק שגיאה במקרה כזה)
                 let result = { removed: false, error: err.message };
                 return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
              }
            }
          
            // אם הפעולה היא הוספה או עדכון
            let found;
            try {
               found = ContactsApp.getContact(email);
            } catch(err) {
              found = null; // איש הקשר לא נמצא
            }
          
            if (!found) {
              Logger.log(`address: ${email}. address not found.. creating contact, naming ${name}`);
              // חיפוש הקבוצה
              var group = ContactsApp.getContactGroup(tavit);
              // יצירת איש קשר חדש והוספתו לקבוצה
              ContactsApp.createContact('', name, email).addToGroup(group);
              let result = { email: true, existed: false, created: true };
              return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
            } else {
              Logger.log(`address: ${email}. found in contacts, changing to ${name}`);
              // עדכון השם המלא של איש הקשר הקיים
              found.setFullName(name);
              let result = { email: true, existed: true, created: false };
              return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
            }
          }
          
          /**
           * פונקציה זו מאמתת תקינות של כתובת אימייל באמצעות ביטוי רגולרי.
           * @param {string} email - כתובת האימייל לבדיקה.
           * @returns {boolean} - מחזירה true אם הכתובת תקינה, אחרת false.
           */
          function validateemail(email) {
            if (!email) {
              return false;
            }
            // ביטוי רגולרי נפוץ לבדיקת תקינות כתובת אימייל
            const re = /^(([^<>()[]\\.,;:\s@"]+(\.[^<>()[]\\.,;:\s@"]+)*)|(".+"))@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            // החזרת תוצאת הבדיקה (true/false)
            return re.test(String(email).toLowerCase());
          }
          

          או שתנסה לשנות את const validate = validateemail(email) ל
          const validate = true

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

            @עידו
            ניסיתי כל מה שהצעת ולא עובד.
            עם הקוד שהבאת משום מה אין בכלל רישום של ריצה.
            מה שהוא הביא כן רץ, אבל יש שגיאה.
            צילום מסך 2025-11-14 002256.png

            ע 2 תגובות תגובה אחרונה תגובה ציטוט 0
            • ע
              עידו @אA נערך לאחרונה על ידי

              @אA איזה קוד לא רץ ואיזה קוד מחזיר שגיאה

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

                @אA כתב בתגובה: מודול הרשמה לרשימת תפוצה:

                @עידו
                ניסיתי כל מה שהצעת ולא עובד.
                עם הקוד שהבאת משום מה אין בכלל רישום של ריצה.
                מה שהוא הביא כן רץ, אבל יש שגיאה.
                צילום מסך 2025-11-14 002256.png

                תנסה ככה

                function doGet(e) {
                  let email = e.parameter.P050;
                  let name = e.parameter.Phone;
                  let method = e.parameter.method;
                  let tavit = 'רשימת תפוצה';
                
                  const validate = validateemail(email);
                  if (!validate) {
                    Logger.log(`fake mail submitted...`);
                    let result = { email: false, existed: false, created: false };
                    return ContentService.createTextOutput(JSON.stringify(result))
                      .setMimeType(ContentService.MimeType.JSON);
                  }
                
                  // הסרה
                  if (method == 'remove') {
                    try {
                      let contact = ContactsApp.getContact(email);
                      if (!contact) {
                        return ContentService.createTextOutput(JSON.stringify({ removed: false }))
                          .setMimeType(ContentService.MimeType.JSON);
                      } else {
                        contact.deleteContact();
                        Logger.log(`user remove himself from list`);
                        return ContentService.createTextOutput(JSON.stringify({ removed: true }))
                          .setMimeType(ContentService.MimeType.JSON);
                      }
                    } catch (err) {
                      return ContentService.createTextOutput(JSON.stringify({ removed: false, error: err.message }))
                        .setMimeType(ContentService.MimeType.JSON);
                    }
                  }
                
                  // הוספה/עדכון
                  let found;
                  try {
                    found = ContactsApp.getContact(email);
                  } catch (err) {
                    found = null;
                  }
                
                  if (!found) {
                    Logger.log(`address: ${email}. not found. creating contact as '${name}'`);
                    let group = ContactsApp.getContactGroup(tavit);
                    ContactsApp.createContact('', name, email).addToGroup(group);
                    return ContentService.createTextOutput(JSON.stringify({ email: true, existed: false, created: true }))
                      .setMimeType(ContentService.MimeType.JSON);
                  }
                
                  // עדכון שם
                  Logger.log(`address: ${email}. found, updating name to '${name}'`);
                  found.setFullName(name);
                  return ContentService.createTextOutput(JSON.stringify({ email: true, existed: true, created: false }))
                    .setMimeType(ContentService.MimeType.JSON);
                }
                
                function validateemail(email) {
                  if (!email) return false;
                
                  const re = /^(([^<>()[]\\.,;:\s@"]+(\.[^<>()[]\\.,;:\s@"]+)*)|(".+"))@(([[0-9]{1,3}(\.[0-9]{1,3}){3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
                
                  return re.test(String(email).toLowerCase());
                }
                
                

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

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

                  @אA זה בעייתי... חלק מהפונקציות שקשורות לאנשי קשר כבר לא קימות

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

                    @עידו
                    כי שינו הגדרות?!

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

                      @אA כי גוגל שינו את הספריה הזו

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

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

                        ע 2 תגובות תגובה אחרונה תגובה ציטוט 0
                        • ע
                          עידו @אA נערך לאחרונה על ידי

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

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

                            פוסט זה נמחק!
                            ע תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • ע
                              עידו @עידו נערך לאחרונה על ידי עידו

                              @עידו תעדכן שראת ואמחוק מכאן את הקישור

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

                                @עידו
                                ראיתי

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

                                  @עידו

                                  התגובה שתקבלת ({"email":false,"existed":false,"created":false}) נובעת מכך שהקוד שלך בודק תקינות אימייל, אבל הפרמטר ששלחת (*****Phone=050) לא כולל כתובת אימייל.

                                  ב־Web App שלך הקוד מחפש את הפרמטר P050 (שהוא supposed להיות האימייל):

                                  let email = e.parameter.P050;

                                  אם לא נשלח ערך תקין ב־P050, הפונקציה validateEmail(email) תחזיר false, ולכן התוצאה היא בדיוק מה שראית.

                                  מה צריך לתקן כדי שהבקשה תצליח:

                                  שלח אימייל תקין בפרמטר P050. לדוגמה:

                                  https://script.googleusercontent.com/macros/echo?user_content_key=...&P050=XXX@example.com&Phone=050*******&method=add

                                  שמור על הפרמטר Phone עבור השם של איש הקשר, כפי שהקוד שלך עושה:

                                  let name = e.parameter.Phone;

                                  הפרמטר method יכול להיות add או remove.

                                  זה נכון?

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

                                    @אA לא נכון

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

                                      @עידו
                                      כמו שחשבתי.
                                      אז הוא שינה חלק משמעותי

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

                                        @אA כן מאוד

                                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • פוסט ראשון
                                          פוסט אחרון