בקשה ! עזרה בכתיבת קוד לג'ימיל להעברת הודעות מייל
-
@chv לא נעים לי כבר להטריד
אבל משהו לא עובד לי
ההודעה מקבלת תווית "להדפסה" נשלחת למייל של המדפסת ומקבלת במקום זה תווית "עובד על זה" ומשם ואילך הוא חוזר ושולח את ההודעה של המדפסת שוב ושוב למדפסת במקום להחזיר לשולח. וגם לא מקבל תווית בוצע ולא מסמן אותה כ"נקרא". -
@גבאי צודק צודק.. טעות שלי בקוד (הטעות היא בשימוש ב
m
גם בפונקציה הפנימית שבשורה 30, היא מכילה בעצם את ההודעה של המדפסת. במקום הודעה מתוך המערך של הודעות עם תווית 'עובד על זה')
הקוד הזה אמור לעבוד (ואמור לכאורה לעבוד בצורה של 'על ראשון-ראשון')function redirect() { let printerEmail = 'hppppppp@mail.com' // מייל של המדפסת let forwardlabel = GmailApp.getUserLabelByName('forward') // שם של תווית - העברה למדפסת let workinglabel = GmailApp.getUserLabelByName('working') // שם של תווית - עובד על זה let donelabel = GmailApp.getUserLabelByName('done') // שם של תווית - בוצע let forwardmessages = forwardlabel.getThreads() if (forwardmessages.length > 0) { forwardmessages.forEach(function (m) { let message = m.getMessages()[0] let subject = message.getSubject() let body = message.getBody() let attachments = message.getAttachments() MailApp.sendEmail(printerEmail, subject, '', { htmlBody: body, attachments: attachments }) m.removeLabel(forwardlabel) // מסיר את תווית העברה m.addLabel(workinglabel) // מוסיף תווית עובד על זה }) } let printermessages = GmailApp.search(`from:${printerEmail} is:unread`) if (printermessages.length > 0) { printermessages.forEach(function (w) { let message = w.getMessages() let lastmessage = message[message.length - 1] let body = lastmessage.getBody() let attachments = lastmessage.getAttachments() let lastworkingthread = workinglabel.getThreads()[0] lastworkingthread.reply(body, { attachments: attachments }) lastworkingthread.removeLabel(workinglabel) lastworkingthread.addLabel(donelabel) w.markRead() }) } }
-
@chv עדין לא עובד (הפעם שולח שוב את ההודעה להדפסה, מקודם זה היה שולח למדפסת חזרה את ההודעה שהיא שלחה,) כל השאר אותו דבר
(אם כבר אתה מטפל שוב בקוד..........
יש לי אתגר בשבילך
אולי אפשר לשדרג את הקוד שאם אני יכתוב בשורת הנושא מספר הוא ישלח להדפסה כמה פעמים כפי המספר שמופיע (הרבה פעמים אני צריך להדפיס כמה פעמים ובשביל זה אני שולח את ההודעה שוב ושוב) ) -
@אהרן-שובקס אמר בבקשה ! עזרה בכתיבת קוד לג'ימיל להעברת הודעות מייל:
יש אפשרות לשלוח מייל ולשנות את המייל השולח למייל אחר
לא, אפשר לשלוח רק מהכתובת שלך, כמובן. או מכתובות שהגדרת שאפשר לשלוח דרכם ("שלח כ-")
אפשר לתת לכל מייל תווית עם המייל של הבן אדם השולח
לא זה ולא האפשרות הקודמת יעזרו.
כי כמו שהוא כתב - המיילים מהמדפסת לא מגיעים כתשובה אלא כמייל נפרד ולא מכילים שום אינפורמציה לגבי איזו הודעה הם נשלחו@גבאי מעניין אותי אם הקוד שתיקנתי עובד?
-
-
@גבאי אמר בבקשה ! עזרה בכתיבת קוד לג'ימיל להעברת הודעות מייל:
הוא לא שולח חזרה את ההודעה מהמדפסת ולא את כל השלבים שאח"כ
גם לא עם קוד האחרון שכתבתי?
@אהרן-שובקס אמר בבקשה ! עזרה בכתיבת קוד לג'ימיל להעברת הודעות מייל:
אם הוא היה שולח את המיילים לשרת אישי
אם היה לו שרת מיילים פרטי - הוא לא היה שואל כאן על גוגל סקריפט
-
@גבאי בדקתי את הסקריפט בפועל (עד עכשיו כתבתי בעל פה בלי לנסות בפועל, כלומר בלי לבדוק שזה עובד)
ממה שראיתי - צורת העבודה של שילוב בין מסננים שמקצים תוויות, ואז הסקריפט מחפש את התוויות - זה מתכון לכאב ראש. המסננים האלו מקצים עוד פעם ועוד פעם את התוויות (אפילו שכבר טופל) וגורמים לסקריפט לרוץ שוב, אני לא יודע עד כמה זה טעות שלי בהגדרת המסננים (לא חושב שזה טעות שלי)
החלטתי לעבוד בלי מסננים.-
הסקריפט עצמו מחפש בהתחלה את כל המיילים - שלא מכתובת המדפסת ו-שללא תווית 'עובד' או 'בוצע'
אותם הוא מעביר (מנתח ובונה הודעה וכו') למדפסת.
ומקצה להן תווית 'עובד'. -
בנוסף הסקריפט מחפש את כל ההודעות שלא נקראו וש-מהמייל של המדפסת
אותם הוא מעביר (ראשון ראשון) להודעות שעם תווית 'עובד'
ומסיר מהן את תווית 'עובד'. ומסמן הודעת המדפסת כנקרא.
עשית בדיקות בפועל וזה עבד לי ללא שגיאות.
שים לב לכאורה אם אתה רוצה להפעיל את זה על אותו מייל שעד עכשיו ניסת איתו - תעבוד לפני כן למחוק את כל ההודעות הקודמות שיש להן תוויות 'עובד' או 'בוצע' או אני יודע מה, או תמחק את התוויות האלה - בכל אופן תבדוק שלא יהיה תוויות שיבלבלו את הסקריפט (זה יכול לבבלבל אותו גם אם זה נמצא אפילו ב'אשפה' . נראה לי)
וכמובן תמחק את המסנן שמוסיף את התווית 'להעברה'זה הקוד:
function redirect() { let printerEmail = 'printer@hp.com' // מייל של המדפסת let workinglabel = GmailApp.getUserLabelByName('working') // שם של תווית - עובד על זה let donelabel = GmailApp.getUserLabelByName('performed') // שם של תווית - בוצע let forwardmessages = GmailApp.search(`-from:${printerEmail} AND -label:working AND -label:performed`) if (forwardmessages.length > 0) { for (let formessage of forwardmessages) { let message = formessage.getMessages()[0] let subject = message.getSubject() let body = message.getBody() let attachments = message.getAttachments() MailApp.sendEmail(printerEmail, subject, '', { htmlBody: body, attachments: attachments }) formessage.addLabel(workinglabel) // מוסיף תווית עובד על זה } } let printermessages = GmailApp.search(`from:${printerEmail} is:unread`) if (printermessages.length > 0) { for (let printmessage of printermessages) { let message = printmessage.getMessages()[0] let body = message.getBody() let attachments = message.getAttachments() let lastworkingthread = workinglabel.getThreads()[0] lastworkingthread.reply('', { htmlBody: body, attachments: attachments }) lastworkingthread.removeLabel(workinglabel) lastworkingthread.addLabel(donelabel) printmessage.markRead() } } }
כמו שאתה רואה - תווית 'להעברה' עברה לעולם שכולו טוב.
כמו כן שינתי את צורת הלולאה מ-forEach
ל-for (let ... of ...)
. אני לא חושב שהיה בעיה עם הקודם - לא הגיוני - אבל עשיתי, שיהיה.דיווחים יתקבלו..
נ.ב. אם השאלה שלך בנוגע ל-webhost הייתה מיועדת אליי - אני לא יודע
-
-
@chv כל הכבוד לך על המאמצים ועל העזרה אין לך מושג איזה תועלת זה בשבילי.
אבל כרגע יש בעיה וכנראה שאני יודע מה הסיבה. הוא שולח שוב ושוב את ההודעה שמתקבלת מהמדפסת
הסיבה לכך לפי מה שאני מבין שהגדרת שהכתובת של המדפסת ששולחת את ההודעה זה אותה כתובת שמקבלת את ההודעה (הרי אין לך כזו מדפסת אז איך יכלת להגדיר את הכתובת, כנראה שעשית לפי הכתובת שאליה נשלחות ההודעות) והאמת היא שהודעות תשובה מתקבלות מכתובת כללית של כל המדפסות וזה הכתובתdonotreply@hpeprint.com
צריך להגדיר את הפילטר שלא מקבל תווית עובד על זה וכן את המילים שאותם צריך לשלוח חזרה בקוד לפי הכתובת הזו ולא לפי הכתובת של המדפסת
-
@chv אין לך מושג באיזה עוצמה אני מרגיש את ה"נהמא דכיסופא" מעולם לא הרגשתי כ"כ הכרת הטוב לבנ"א שכ"כ טורח ומתאמץ ומתמסר לשני בלי להכיר ובלי שהשני יוכל להכיר אותו/ להוקיר לו טובה
אני כל הזמן מסתובב בהרגשה...... איך אני עושה לההוא @chv טובה בחזרה? איך אני מודה לו? הקושי שלי הוא עצום! היום התחלתי להבין מה זה "נהמא דכיסופא"
בקיצור אין לי מילים...... ואם יש דרך להכיר לך טובה תעדכן אותי -
@גבאי נכון, לא חשבתי על זה..
זה אמור לסדר את זה:function redirect() { let printerEmail = 'printer@hp.com' // מייל של המדפסת let printerResponsesEmail = 'dontreply@hp.com'// מייל תשובות מהמדפסת let workinglabel = GmailApp.getUserLabelByName('working') // שם של תווית - עובד על זה let donelabel = GmailApp.getUserLabelByName('performed') // שם של תווית - בוצע let forwardmessages = GmailApp.search(`-from:${printerResponsesEmail} AND -label:working AND -label:performed`) // לשים לב לשמות התוויות if (forwardmessages.length > 0) { for (let formessage of forwardmessages) { let message = formessage.getMessages()[0] let subject = message.getSubject() let body = message.getBody() let attachments = message.getAttachments() // בשורה הבאה - שולח מייל למדפסת מתוכן ההודעה שהתקבלה MailApp.sendEmail(printerEmail, subject, '', { htmlBody: body, attachments: attachments }) formessage.addLabel(workinglabel) // מוסיף תווית 'עובד על זה' להודעה } } let printermessages = GmailApp.search(`from:${printerResponsesEmail} is:unread`) if (printermessages.length > 0) { for (let printmessage of printermessages) { let message = printmessage.getMessages()[0] let body = message.getBody() let attachments = message.getAttachments() let lastworkingthread = workinglabel.getThreads()[0] lastworkingthread.reply('', { htmlBody: body, attachments: attachments }) lastworkingthread.removeLabel(workinglabel) // מוחק תווית 'עובד על זה' מהודעה שקיבלה תשובה lastworkingthread.addLabel(donelabel) // מקצה תווית 'בוצע' להודעה שקיבלה תשובה printmessage.markRead() // סימון הודעת המדפסת כנקרא } } }
@גבאי אמר בבקשה ! עזרה בכתיבת קוד לג'ימיל להעברת הודעות מייל:
@chv אין לך מושג באיזה עוצמה אני מרגיש את ה"נהמא דכיסופא" מעולם לא הרגשתי כ"כ הכרת הטוב לבנ"א שכ"כ טורח ומתאמץ ומתמסר לשני בלי להכיר ובלי שהשני יוכל להכיר אותו/ להוקיר לו טובה
אני כל הזמן מסתובב בהרגשה...... איך אני עושה לההוא @chv טובה בחזרה? איך אני מודה לו? הקושי שלי הוא עצום! היום התחלתי להבין מה זה "נהמא דכיסופא"
בקיצור אין לי מילים...... ואם יש דרך להכיר לך טובה תעדכן אותיתודה על הפרגונים.. אבל אל תגזים, אני בעיקר נהנה מהאתגרים האלה וזה לא הכל חסד
-
@chv התקדמנו שלב.......... אבל עדין לא לגמרי
א. הוא שולח שוב ושוב למדפסת את ההודעה (כנראה בגלל שההודעה שנמצאת בדואר יוצא ג"כ מופעלת עליה הפרוצדורה של הסקריפט, כמו הפשלה שהיתה לי בסינון שצריך לעשות רק מה שנשלח אלי.)
ב. הוא אמנם נותן תווית בוצע אבל לא שולח אלי בחזרה.....