בעיה | הדפסה אוטומטית מהמייל
-
@שמח-לשמוע לא העילית את הסקריפט החדש
אבל במה שהעילית למעלה
אתה עושה לולאה על התרדים (שרשורים) של ההודעות אבל ניגש כל פעם רק להודעה הראשונה:let messages = label.getThreads() if (messages.length > 0) { messages.forEach(function (m) { let message = m.getMessages()[0]
messages זה מערך של ת'רדים
אתה עושה לולאה על הת'רדים
אבל בכל אחד מהם (m
) אתה ניגש רק להודעה הראשונה
אתה אמור לעשות לולאה נוספת בתוך הת'רד על ההודעות שבו -
@ephraum-tzvi אמר בבעיה | הדפסה אוטומטית מהמייל:
אולי @מתכנת-חובב יכול לעזור בנידון?
אני טוב בסקריפטים בשפות אחרות, לא בזה.
-
@שמח-לשמוע הלולאה עצמה זה לא הבעיה
הבעיה שצריך לעשות שלא ישלח כל פעם את כל ההודעות בתרד... אפשר לעשות את זה על ידי תנאי זמן - מה שישן יותר מדקה לא יישלח, ואת הטריגר עושים פעם בדקה, וכך יודעים שאם זה ישן יותר זה כבר טופל...
אני עשיתי את זה בצורה שונה - ההודעה תישלח רק אם היא עוד לא נקראה, ולאחר השליחה הסקריפט מסמן אותה כנקראה.function redirect() { let printerEmail = '71------6@lon1.printnode.com'; let label = GmailApp.getUserLabelByName('להדפסה'); let threads = label.getThreads(); if (threads.length) { for (const thread of threads) { let messages = thread.getMessages(); for (const message of messages) { if (message.isUnread()) { let subject = message.getSubject(); let attachments = message.getAttachments(); MailApp.sendEmail(printerEmail, subject, '', { attachments: attachments, }); message.markRead(); } } } } }
וכמובן תוסיף במייל מסנן שיוסיף את התגית למיילים הרצויים
נ.ב. הסרתי את הbody כיוון שזה מיותר - אמרת שnodeprint מדפיס רק קבצים מצורפים... (אחרת היה אפשר להשתמש בההעברה המובנית של המייל) -
@צדיק-תמים אמר בבעיה | הדפסה אוטומטית מהמייל:
threads
זה חלק מהקוד שבניתי
איך יוצרים בתוך זה שיחפש רק אם ההודעה נקראה?function redirect() { let printerEmail = 'הדפסה למכונת צילום <7----76@lon1.printnode.com>' let label = GmailApp.getUserLabelByName('הדפסה') let labe2 = GmailApp.getUserLabelByName('הדפסה בוצע') let messages = label.getThreads() if (messages.length > 0) { messages.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 // }) for (var k = 0; k < attachments.length; k++) { Logger.log('Message "%s" contains the attachment "%s" (%s bytes)', subject, attachments[k].getName(), attachments[k].getSize()); // Logger.log(attachments[k].getAs('application/pdf'))
-
-
@שמח-לשמוע אמר בבעיה | הדפסה אוטומטית מהמייל:
רק חסר לי בדיקה לפי הודעות שנקראו.
בקוד שכתבתי בפוסט הזה
הבדיקה היא בשורה 9if (message.isUnread()) {
והסימון כנקרא בשורה 15
message.markRead();