תגובה: מודול הרשמה לרשימת תפוצה
-
@א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 -
@עידו
ניסיתי כל מה שהצעת ולא עובד.
עם הקוד שהבאת משום מה אין בכלל רישום של ריצה.
מה שהוא הביא כן רץ, אבל יש שגיאה.

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

תנסה ככה
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()); }אני לא מתעסק עם זה כרגע, פשוט שם בבינה מלאכותית וזו התשובה.
-
@אA זה בעייתי... חלק מהפונקציות שקשורות לאנשי קשר כבר לא קימות
-
@עידו
כי שינו הגדרות?! -
@אA כי גוגל שינו את הספריה הזו
-
@עידו
אז זה לא יעבוד.
הבינה לא שינתה את הקוד?
אולי היא תוכל לתת קוד חדש.
האמת שלמעשה אני צריך את זה בכלל לקבוצות גוגל, רק חשבתי לנסות ולהוציא מאנשי קשר לקבוצות. -
@אA ניסיתי כמה פעמים ושינתה למשהו אחר והייתי צריך להתעסק עם auth0 אומשהו כזה התחלתי אבל אין לי זמן לזה...
-
פוסט זה נמחק! -
@עידו תעדכן שראת ואמחוק מכאן את הקישור
-
@עידו
ראיתי -
התגובה שתקבלת ({"email":false,"existed":false,"created":false}) נובעת מכך שהקוד שלך בודק תקינות אימייל, אבל הפרמטר ששלחת (*****Phone=050) לא כולל כתובת אימייל.
ב־Web App שלך הקוד מחפש את הפרמטר P050 (שהוא supposed להיות האימייל):
let email = e.parameter.P050;
אם לא נשלח ערך תקין ב־P050, הפונקציה validateEmail(email) תחזיר false, ולכן התוצאה היא בדיוק מה שראית.
מה צריך לתקן כדי שהבקשה תצליח:
שלח אימייל תקין בפרמטר P050. לדוגמה:
שמור על הפרמטר Phone עבור השם של איש הקשר, כפי שהקוד שלך עושה:
let name = e.parameter.Phone;
הפרמטר method יכול להיות add או remove.
זה נכון?
-
@אA לא נכון
-
@עידו
כמו שחשבתי.
אז הוא שינה חלק משמעותי -
@אA כן מאוד