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

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

    עזרה הדדית למשתמשים מתקדמים
    3
    19
    20
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ע
      עידו @א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
                              • פוסט ראשון
                                פוסט אחרון