דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. מדריך | הרשמה אוטומטית לרשימת תפוצה באימייל

מדריך | הרשמה אוטומטית לרשימת תפוצה באימייל

מתוזמן נעוץ נעול הועבר עזרה הדדית - מחשבים וטכנולוגיה
2 פוסטים 2 כותבים 42 צפיות 1 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    אבי 6
    כתב נערך לאחרונה על ידי אבי 6
    #1

    חיפשתי הרבה בפורום ולא מצאתי מדריך מפורט בענין, ישבתי הרבה עם GPT וחברים בעלי ידע בתחום והנה התוצאה לפניכם.

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

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

    אז דבר ראשון תכנסו כמובן מהחשבון גוגל שממנו תרצו לנהל רשימת תפוצה, ותכנסו ל https://script.google.com/home תיצרו פרויקט חדש.
    בשורת הקוד תמחקו הכל ותדביקו את הקוד הבא.

    // שם קבוצת אנשי הקשר שיווצר אוטומטית בגוגל קונטקטס
    const LABEL_NAME = "כאן תכתוב את שם הקבוצה באנשי קשר";
    
    // מזהה הגיליון (Spreadsheet ID) – יש לקחת מה-URL של קובץ הגוגל שיטס
    const SHEET_ID = "כאן תכניס את ה-ID של Google Sheets";
    
    // שם הטאב (Sheet) בגיליון בו יישמרו הנרשמים
    const SHEET_NAME = "כאן תכניס את שם הגיליון (Tab)";
    
    // אימייל של מי שמריץ את הסקריפט (נלקח אוטומטית מהחשבון המחובר)
    const SYSTEM_EMAIL = Session.getActiveUser().getEmail(); // מונע הוספה עצמית לרשימה
    
    function processJoinRequests() {
      // חיפוש מיילים שהתקבלו בתיבת הדואר הנכנס, בנושא מסוים, ב-24 השעות האחרונות
      const threads = GmailApp.search('is:inbox "כאן יהיה כתוב נושא בקשת ההצטרפות האוטומטית" newer_than:1d');
    
      // יצירת קבוצה באנשי קשר במידת הצורך
      const label = getOrCreateLabel();
    
      // פתיחת הגיליון והטאב הנכון
      const sheet = getOrCreateSheet();
    
      // שליפת רשימת אימיילים שכבר קיימים בגיליון כדי למנוע כפילויות
      const existingEmails = getExistingEmails(sheet);
    
      // מעבר על כל "שיחה" (Thread) שנמצאה
      threads.forEach(thread => {
        const messages = thread.getMessages(); // כל ההודעות בתוך השיחה
    
        messages.forEach(message => {
          const fromHeader = message.getFrom(); // שולף את השולח ("שם <email>")
          const emailMatch = fromHeader.match(/<(.+?)>/); // שולף את כתובת האימייל מהסוגריים המשולשים
          const email = emailMatch ? emailMatch[1] : fromHeader; // אם לא נמצא סוגריים – נשתמש בכל הטקסט
          const name = fromHeader.replace(/<.+>/, "").trim(); // שולף את השם בלבד (ללא האימייל)
    
          // סינון: לא להוסיף אם אין אימייל, אם זה אני עצמי, או שכבר נרשם בעבר
          if (!email || email === SYSTEM_EMAIL || existingEmails.has(email)) return;
    
          // יצירת איש קשר חדש או שליפה אם כבר קיים
          const resourceName = getOrCreateContact(email, name);
    
          // שיוך איש הקשר לקבוצת אנשי קשר שבחרנו
          addContactToLabel(resourceName, label.resourceName);
    
          // שליחת מייל אישור הצטרפות
          sendConfirmation(email);
    
          // הוספה לגיליון
          sheet.appendRow([new Date(), email, name]);
    
          // הוספה גם לרשימת המעקב בזיכרון כדי למנוע כפילויות בתוך אותה הרצה
          existingEmails.add(email);
    
          // סימון ההודעה כנקראה
          message.markRead();
        });
    
        // מחיקת השיחה מהתיבה (מעביר לאשפה)
        thread.moveToTrash();
      });
    }
    
    function getOrCreateLabel() {
      // שליפת כל קבוצות אנשי הקשר הקיימות
      const groups = People.ContactGroups.list().contactGroups || [];
    
      // חיפוש אם הקבוצה כבר קיימת
      let label = groups.find(g => g.formattedName === LABEL_NAME);
    
      // אם לא קיימת – ניצור קבוצה חדשה
      if (!label) {
        label = People.ContactGroups.create({
          contactGroup: { name: LABEL_NAME }
        });
      }
    
      return label;
    }
    
    function getOrCreateContact(email, name) {
      // חיפוש אם איש קשר עם אותו אימייל כבר קיים באנשי הקשר של החשבון
      const results = People.People.searchContacts({
        query: email,
        pageSize: 1,
        readMask: "emailAddresses"
      }).results;
    
      // אם כבר קיים – נחזיר את מזהה האיש קשר (resourceName)
      if (results && results.length > 0) {
        return results[0].person.resourceName;
      } else {
        // אם לא – ניצור איש קשר חדש עם האימייל והשם
        const newContact = People.People.createContact({
          emailAddresses: [{ value: email }],
          names: [{ displayName: name }]
        });
        return newContact.resourceName;
      }
    }
    
    function addContactToLabel(resourceName, labelResourceName) {
      // שיוך איש הקשר לקבוצת אנשי קשר (label)
      People.ContactGroups.Members.modify({
        resourceNamesToAdd: [resourceName]
      }, labelResourceName);
    }
    
    function sendConfirmation(email) {
      // שליחת מייל אישור הצטרפות עם עיצוב HTML
      MailApp.sendEmail({
        to: email,
        subject: "כאן יהיה נושא מייל האישור – לדוגמה: ברוך הבא לרשימת התפוצה שלנו",
        name: "כאן יופיע שם השולח – לדוגמה: מערכת עלון שבועי",
        htmlBody: `
          <div dir="rtl" style="font-family: Arial, sans-serif; background-color: #f9f9f9; padding: 24px; border-radius: 12px; border: 1px solid #e0e0e0; color: #333;">
            <h2 style="color: #2e6c80; text-align: center;">כאן תכתוב את המלל שאתה רוצה שיהיה כתוב במייל החוזר על אישור ההצטרפות ל...</h2>
            
            <p style="font-size: 16px;">
              לדוגמה: תודה שהצטרפת לרשימת התפוצה של עלון 'XYZ'. מדי שבוע תקבלו תכנים נבחרים...
            </p>
    
            <p style="font-size: 16px;">
              ניתן בכל עת להסיר את עצמך מהרשימה על ידי מענה למייל זה.
            </p>
    
            <p style="font-size: 16px; text-align: center;">
              <strong>בברכה,<br>מערכת XYZ</strong>
            </p>
          </div>
        `
      });
    }
    
    function getOrCreateSheet() {
      // פתיחת הגיליון לפי ה-ID
      const ss = SpreadsheetApp.openById(SHEET_ID);
    
      // ניסיון לפתוח את הטאב הקיים
      let sheet = ss.getSheetByName(SHEET_NAME);
    
      // אם הטאב לא קיים – ניצור אותו ונכניס כותרות
      if (!sheet) {
        sheet = ss.insertSheet(SHEET_NAME);
        sheet.appendRow(["תאריך", "אימייל", "שם"]);
      }
    
      return sheet;
    }
    
    function getExistingEmails(sheet) {
      // סריקת כל האימיילים הקיימים בעמודה השנייה (טור B) כדי למנוע כפילויות
      const lastRow = sheet.getLastRow();
      const emails = new Set();
    
      if (lastRow <= 1) return emails; // אין נתונים מלבד הכותרת
    
      const data = sheet.getRange(2, 2, lastRow - 1).getValues();
      data.forEach(row => emails.add(row[0])); // הוספת כל אימייל לקבוצה
      return emails;
    }
    
    

    בלשונית 'שירותים' תחפשו את השירותים הבאים ותפעילו אותם:
    People API
    בשלב זה או קודם המערכת תבקש אישורי אבטחה של גוגל, תאשרו הכל.

    כעת תיצרו קובץ גוגל שיטס בדרייב שלכם, תקראו לו שם כרצונכם [לדוגמא 'רשימת מצטרפים'] ותעתיקו את כתובת הID של הקובץ ותכניסו בשורה השניה של הקוד.

    [כתובת הID של הקובץ זה החלק שבין /d/ לבין /edit.
    לדוגמא: https://docs.google.com/spreadsheets/d/1AbCDefGhIjKlMnOpQRsTuVWxyz1234567890/edit#gid=0
    אז הID הוא: 1AbCDefGhIjKlMnOpQRsTuVWxyz1234567890]

    תיכנסו לקוד ותכתבו בשורה הראשונה את שם התוית באנשי קשר, בשורה השלישית את שם הגיליון שהגדרתם בשיטס [לדוגמא 'רשימת מצטרפים'], בשורה 15 תכתוב את שורת הנושא במיילים [לדוגמא 'בקשת הצטרפות'], בשורה 112 והלאה תוכל לשנות את הטקסט במייל אישור ההצטרפות.

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

    בהצלחה.

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

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

    צדיק תמיםצ תגובה 1 תגובה אחרונה
    5
    • א אבי 6

      חיפשתי הרבה בפורום ולא מצאתי מדריך מפורט בענין, ישבתי הרבה עם GPT וחברים בעלי ידע בתחום והנה התוצאה לפניכם.

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

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

      אז דבר ראשון תכנסו כמובן מהחשבון גוגל שממנו תרצו לנהל רשימת תפוצה, ותכנסו ל https://script.google.com/home תיצרו פרויקט חדש.
      בשורת הקוד תמחקו הכל ותדביקו את הקוד הבא.

      // שם קבוצת אנשי הקשר שיווצר אוטומטית בגוגל קונטקטס
      const LABEL_NAME = "כאן תכתוב את שם הקבוצה באנשי קשר";
      
      // מזהה הגיליון (Spreadsheet ID) – יש לקחת מה-URL של קובץ הגוגל שיטס
      const SHEET_ID = "כאן תכניס את ה-ID של Google Sheets";
      
      // שם הטאב (Sheet) בגיליון בו יישמרו הנרשמים
      const SHEET_NAME = "כאן תכניס את שם הגיליון (Tab)";
      
      // אימייל של מי שמריץ את הסקריפט (נלקח אוטומטית מהחשבון המחובר)
      const SYSTEM_EMAIL = Session.getActiveUser().getEmail(); // מונע הוספה עצמית לרשימה
      
      function processJoinRequests() {
        // חיפוש מיילים שהתקבלו בתיבת הדואר הנכנס, בנושא מסוים, ב-24 השעות האחרונות
        const threads = GmailApp.search('is:inbox "כאן יהיה כתוב נושא בקשת ההצטרפות האוטומטית" newer_than:1d');
      
        // יצירת קבוצה באנשי קשר במידת הצורך
        const label = getOrCreateLabel();
      
        // פתיחת הגיליון והטאב הנכון
        const sheet = getOrCreateSheet();
      
        // שליפת רשימת אימיילים שכבר קיימים בגיליון כדי למנוע כפילויות
        const existingEmails = getExistingEmails(sheet);
      
        // מעבר על כל "שיחה" (Thread) שנמצאה
        threads.forEach(thread => {
          const messages = thread.getMessages(); // כל ההודעות בתוך השיחה
      
          messages.forEach(message => {
            const fromHeader = message.getFrom(); // שולף את השולח ("שם <email>")
            const emailMatch = fromHeader.match(/<(.+?)>/); // שולף את כתובת האימייל מהסוגריים המשולשים
            const email = emailMatch ? emailMatch[1] : fromHeader; // אם לא נמצא סוגריים – נשתמש בכל הטקסט
            const name = fromHeader.replace(/<.+>/, "").trim(); // שולף את השם בלבד (ללא האימייל)
      
            // סינון: לא להוסיף אם אין אימייל, אם זה אני עצמי, או שכבר נרשם בעבר
            if (!email || email === SYSTEM_EMAIL || existingEmails.has(email)) return;
      
            // יצירת איש קשר חדש או שליפה אם כבר קיים
            const resourceName = getOrCreateContact(email, name);
      
            // שיוך איש הקשר לקבוצת אנשי קשר שבחרנו
            addContactToLabel(resourceName, label.resourceName);
      
            // שליחת מייל אישור הצטרפות
            sendConfirmation(email);
      
            // הוספה לגיליון
            sheet.appendRow([new Date(), email, name]);
      
            // הוספה גם לרשימת המעקב בזיכרון כדי למנוע כפילויות בתוך אותה הרצה
            existingEmails.add(email);
      
            // סימון ההודעה כנקראה
            message.markRead();
          });
      
          // מחיקת השיחה מהתיבה (מעביר לאשפה)
          thread.moveToTrash();
        });
      }
      
      function getOrCreateLabel() {
        // שליפת כל קבוצות אנשי הקשר הקיימות
        const groups = People.ContactGroups.list().contactGroups || [];
      
        // חיפוש אם הקבוצה כבר קיימת
        let label = groups.find(g => g.formattedName === LABEL_NAME);
      
        // אם לא קיימת – ניצור קבוצה חדשה
        if (!label) {
          label = People.ContactGroups.create({
            contactGroup: { name: LABEL_NAME }
          });
        }
      
        return label;
      }
      
      function getOrCreateContact(email, name) {
        // חיפוש אם איש קשר עם אותו אימייל כבר קיים באנשי הקשר של החשבון
        const results = People.People.searchContacts({
          query: email,
          pageSize: 1,
          readMask: "emailAddresses"
        }).results;
      
        // אם כבר קיים – נחזיר את מזהה האיש קשר (resourceName)
        if (results && results.length > 0) {
          return results[0].person.resourceName;
        } else {
          // אם לא – ניצור איש קשר חדש עם האימייל והשם
          const newContact = People.People.createContact({
            emailAddresses: [{ value: email }],
            names: [{ displayName: name }]
          });
          return newContact.resourceName;
        }
      }
      
      function addContactToLabel(resourceName, labelResourceName) {
        // שיוך איש הקשר לקבוצת אנשי קשר (label)
        People.ContactGroups.Members.modify({
          resourceNamesToAdd: [resourceName]
        }, labelResourceName);
      }
      
      function sendConfirmation(email) {
        // שליחת מייל אישור הצטרפות עם עיצוב HTML
        MailApp.sendEmail({
          to: email,
          subject: "כאן יהיה נושא מייל האישור – לדוגמה: ברוך הבא לרשימת התפוצה שלנו",
          name: "כאן יופיע שם השולח – לדוגמה: מערכת עלון שבועי",
          htmlBody: `
            <div dir="rtl" style="font-family: Arial, sans-serif; background-color: #f9f9f9; padding: 24px; border-radius: 12px; border: 1px solid #e0e0e0; color: #333;">
              <h2 style="color: #2e6c80; text-align: center;">כאן תכתוב את המלל שאתה רוצה שיהיה כתוב במייל החוזר על אישור ההצטרפות ל...</h2>
              
              <p style="font-size: 16px;">
                לדוגמה: תודה שהצטרפת לרשימת התפוצה של עלון 'XYZ'. מדי שבוע תקבלו תכנים נבחרים...
              </p>
      
              <p style="font-size: 16px;">
                ניתן בכל עת להסיר את עצמך מהרשימה על ידי מענה למייל זה.
              </p>
      
              <p style="font-size: 16px; text-align: center;">
                <strong>בברכה,<br>מערכת XYZ</strong>
              </p>
            </div>
          `
        });
      }
      
      function getOrCreateSheet() {
        // פתיחת הגיליון לפי ה-ID
        const ss = SpreadsheetApp.openById(SHEET_ID);
      
        // ניסיון לפתוח את הטאב הקיים
        let sheet = ss.getSheetByName(SHEET_NAME);
      
        // אם הטאב לא קיים – ניצור אותו ונכניס כותרות
        if (!sheet) {
          sheet = ss.insertSheet(SHEET_NAME);
          sheet.appendRow(["תאריך", "אימייל", "שם"]);
        }
      
        return sheet;
      }
      
      function getExistingEmails(sheet) {
        // סריקת כל האימיילים הקיימים בעמודה השנייה (טור B) כדי למנוע כפילויות
        const lastRow = sheet.getLastRow();
        const emails = new Set();
      
        if (lastRow <= 1) return emails; // אין נתונים מלבד הכותרת
      
        const data = sheet.getRange(2, 2, lastRow - 1).getValues();
        data.forEach(row => emails.add(row[0])); // הוספת כל אימייל לקבוצה
        return emails;
      }
      
      

      בלשונית 'שירותים' תחפשו את השירותים הבאים ותפעילו אותם:
      People API
      בשלב זה או קודם המערכת תבקש אישורי אבטחה של גוגל, תאשרו הכל.

      כעת תיצרו קובץ גוגל שיטס בדרייב שלכם, תקראו לו שם כרצונכם [לדוגמא 'רשימת מצטרפים'] ותעתיקו את כתובת הID של הקובץ ותכניסו בשורה השניה של הקוד.

      [כתובת הID של הקובץ זה החלק שבין /d/ לבין /edit.
      לדוגמא: https://docs.google.com/spreadsheets/d/1AbCDefGhIjKlMnOpQRsTuVWxyz1234567890/edit#gid=0
      אז הID הוא: 1AbCDefGhIjKlMnOpQRsTuVWxyz1234567890]

      תיכנסו לקוד ותכתבו בשורה הראשונה את שם התוית באנשי קשר, בשורה השלישית את שם הגיליון שהגדרתם בשיטס [לדוגמא 'רשימת מצטרפים'], בשורה 15 תכתוב את שורת הנושא במיילים [לדוגמא 'בקשת הצטרפות'], בשורה 112 והלאה תוכל לשנות את הטקסט במייל אישור ההצטרפות.

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

      בהצלחה.

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

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

      צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      מדריכים
      כתב נערך לאחרונה על ידי
      #2

      @אבי-6 כתב במדריך | הרשמה אוטומטית לרשימת תפוצה באימייל:

      בלשונית 'שירותים' תחפשו את השירותים הבאים ותפעילו אותם:
      Gmail API

      אין צורך

      רוצה לזכור קריאת שמע בזמן? לחץ כאן! || אתר שכולו מדריכים

      תגובה 1 תגובה אחרונה
      0

      • התחברות

      • אין לך חשבון עדיין? הרשמה

      • התחברו או הירשמו כדי לחפש.
      • פוסט ראשון
        פוסט אחרון
      0
      • חוקי הפורום
      • פופולרי
      • לא נפתר
      • משתמשים
      • חיפוש גוגל בפורום
      • צור קשר