כתבתי מהר אז יצא כמה טעויות (גם השנה)
התכוונתי לרעיון
ועל זה @dovid כבר ענה לי
שאול נ"י
-
-
@dovid כתב בחיפוש תאריך ושעה הכי קרוב:
אני לא הבנתי מה זה תאריך קרוב וסדר עוקב.
אתה יכול לספק עוד הסבר וגם אולי דוגמה של פלט רצוי?התכוונתי שידפיס את התאריך הבא ולא תאריך שכבר עבר
לדוגמה אם התאריך הוא עכשיו21:40:00 2023-06-26
שידפיס2023-06-27T15:35:00
ולא2023-06-26T15:35:00
למרות שמבחינת תאריך הוא יותר קרוב -
יש לי קוד (PHP) שמקבל JSON עם כמה אינדקסים שכוללים בתוכו תאריך ושעה
(כפי ש@dovid הסביר לי כבר זה לא באמת תאריך אבל לשם השאלה תנו לי לקרוא לזה כך)
אני רוצה לקבל את התאריך ושעה עוקב לתאריך ושעה הנוכחי מינוס 6 שעות
הקוד הוא כך<?php date_default_timezone_set("Asia/Jerusalem"); $date = date('d-m-Y H:i:s',mktime()-60*60*6); $json =array('{"responseStatus":"OK","templateId":420049,"entries": {"fields": {"include_total": true, "limit": 100, "records_format": "objects", "total_estimation_threshold": null, "records": [{"rowid":67649101,"index":"2023-06-25T19:35:00","phone":"0583200000","blocked":false,"name":"הרב טוב לב שליט\"א ","moreinfo":""},{"rowid":67649104,"index":"2022-06-26T19:35:00","phone":"0533100000","blocked":false,"name":"מנהל","moreinfo":""},{"rowid":67649845,"index":"2022-06-27T19:35:00","phone":"0548400000","blocked":false,"name":"","moreinfo":""}],"yemotAPIVersion":6}}}'); ?>
איך אני מקבל את התאריך הכי קרוב רק בסדר עוקב?
-
@yossiz אמר בריצה בלופ מהאחרון לראשון בJS:
@שאול-נ-י אמר בריצה בלופ מהאחרון לראשון בJS:
אז מישהו כתב לי איך לחלק את זה, הנה דוגמא
str.match(/.{1,10}(\s|$)/g)
שים לב שבדרך זו יכול להיות מצב שאתה מפספס חלק מהמחרוזת המקורי, למשל אם יש רצף של יותר מ-10 תווים שאינם רווחים,
אכן, ואת זה לקחתי בחשבון, אך למרות זאת זה עדיך לי קודם כל משום שאני מתכוון ליישם את זה על הרבה יותר תווים (אני לא חושב שיש מילה של יותר מ-140 תווים ) וגם במקרה כזה עדיף לי שייחתך באמצע משישאיר יותר תווים
או במקרה של שני סופי שורה זא"ז
והשנייה על ידי הוספת הדגל
s
לרג'קסלצערי אני עדיין לא מכיר רג'קס וכמו שציינתי, 'מישהו כתב לי', איך לעשות את זה, ולכן לא הבנתי למה במקרה של שני סופי שורה זה יוצר ת'בעיה (ראיתי בדוגמא שהבאת שזה כך אבל לא למה) וגם מה הפתרון של הוספת s
-
שלום,
יש לי משתנה שמכיל בתוכו כמה מאות מילים ואני רוצה לחלק את זה למשתנים קצרים יותר שכל אחד מכיל בתוכו לא יותר מכמה תווים מבלי לחלק מילים שלימות
אז מישהו כתב לי איך לחלק את זה, הנה דוגמאconst str = 'שלום וברכה, נא להשאיר הודעה ונחזור אליכם בהקדם'; const s = str.match(/.{1,10}(\s|$)/g);
שזה מחלק לעשר תווים (או פחות) אבל משאיר מילים שלימות
עכשיו אני רוצה לעשות פעולה על כל המשתנים המחולקים ולהריץ אותם מהאחרון לראשון לפי הסדר
ניסתי משהו כזהconst str = 'שלום וברכה, נא להשאיר הודעה ונחזור אליכם בהקדם'; const s = str.match(/.{1,10}(\s|$)/g); for (e of s){ const a = 1 console.log(s[s.length -0+-a]) }
השאלה איך אני עושה שבכל ריצה משתנה 'a' יעלה מספר?
או שאני בכלל לא בכיוון והשאלה איך כן עושים את זה -
אני מקבל תשובה בJSON שכולל בתוכו כמה מערכים בתוך מערכים,
אני רוצה לקבל חלק מתגובה של תת-תת מערך איך אני אמור לעשות את זה?
זה הקוד<?php $json ='{"responseStatus":"OK","templateId":420049,"entries": {"fields": {"include_total": true, "limit": 100, "records_format": "objects", "total_estimation_threshold": null, "records": [{"rowid":67649101,"index":"2022-06-20T19:35:00","phone":"0583200000","blocked":false,"name":"הרב טוב לב שליט\"א ","moreinfo":""},{"rowid":67649104,"index":"2022-06-22T19:35:00","phone":"0533100000","blocked":false,"name":"מנהל","moreinfo":""},{"rowid":67649845,"index":"2022-06-21T19:35:00","phone":"0548400000","blocked":false,"name":"","moreinfo":""}],"yemotAPIVersion":6}}}'; $json = json_decode($json,TRUE); ?>
ואני רוצה לקבל רק את חלק התאריך מתוך האינדקס הראשון ולא את חלק השעה
-
אני חושב שיש צורך שאתנצל בפני חברי הפורום היקרים כ"א בשמו הטוב יבורך ובפרט ל@yossiz ול@dovid שגזלו מזמנם היקר לענות לי על השאלות ברצון טוב לעזור..
בו בזמן שכמו ש@yossiz אמר@yossiz אמר בENCODING ללא ירידת שורה:
בד"כ קשיי הסברה מגיעים מעמעום בהבנה.
וזה אכן היה המקרה שלי.
אני בכל זאת אנסה להסביר מה קרה לי פה
אני רציתי לשלוח בAPI טקסט מסיום שהיה צריך לעבור encodeURI לפני השליחה, אז השתמשתי בencodeURI בשרת (app scripts של גוגל) אבל מה, בפלט של השרת כשהגיע לירידת שורה הוא תירגם את זה ל '%0D%0A' ומצד שני השרת API שקיבל את הJSON לא רצה לקבל את זה וטען שזה לא תקין
אז אני, במקום לחשוב איך לתקן את זה ולשאול שאלה ספציפית, רציתי לעקוף את הבעיה ע"י לא לתת לו לרדת שורה, וחשבתי שכך הבעיה תסתדר, ואת זה שאלתי פה בפורום איך לעשות שלא יהיה ירידת שורה.
אבל מה? בסוף הבנתי שיש פעמים שאני חייב לשלוח כמה שורות, ולא יעזור לי לעשות פתרונות כאלו, אז ערבבתי את הנושא והתחלתי לשאול איך כן לשלוח את הAPI תקין, ולא הבנתי ולא הובנתיבסוף עשיתי replace מ '%0D%0A' ל '%5C%5Cn' ואז הכל הסתדר, אבל שוב, סליחה מכל אלו שניסו לעזור ככל יכולתם ולא אפשרתי להם
(נ.ב. מקווה שהפוסט הזה כן מובן) -
@מוטי-אורן תודה
אני מדבר על השלב שאחרי קבלת ההודעה האחרונה בשרשור
אז עשיתי פקודה שאקבל את תוכן ההודעה, אבל כל הודעה שמתקבלת מכילה בתוכה בעתם את כל השרשור
כתבתי כךfunction myFunction() { var firstThread = GmailApp.getInboxThreads(0,1)[0]; var messages = firstThread.getMessages(); var lastMessage = messages[messages.length - 1]; var body = lastMessage.getPlainBody() Logger.log(body) }
וזה מה שהתקבל
C בתאריך יום ד׳, 6 באוק׳ 2021 ב-17:40 מאת AAAAA <XXX@gmail.com >: > B > > בתאריך יום ד׳, 6 באוק׳ 2021 ב-17:39 מאת AAAAA <XXX@gmail.com > >: > >> A >> >
כלומר, השורה הראשונה היא התשובה האחרונה שהתקבל אצלי, אבל מתחת יש גם את כל השרשור כמצוטט
ואני רוצה להעביר הלאה (לדוגמא לשלוח למייל אחר) רק את התשובה האחרונה (רק C)
-
@צבי-10 אמר בפקודה לשינוי שם קובץ לפי תאריך לועזי:
שמתי לב, שלפעמים בתוך התיקייה במערכת ימות המשיח, הם מוסיפים קובץ טקסט לכל קובץ. דוגמא
20211006.wav
20211006.txt
אפשר אפשרות שישנה שם פעמיים.זה קורה בדרך כלל רק כשהקבצים כבר בשלוחה והם משנים את זה אוטומטית לסיומת OGG (כנראה כדי לחסוך נפח) אז נוצר קובץ טקסט עם שם הקובץ שהומר שהוא מכיל את הפרטים של הקובץ האורגינלי
אתה לא אמור להעלות את הקובץ טקסט לבד -
בג'ימייל כשעונים תשובה לאימייל שהתקבל התשובה כוללת בתוכה את כל השרשור של האימיילים מהתחלה
(כשמקבלים תשובה על אימייל אפשר ללחוץ על השלוש נקודות...
ולראות את כל השרשור)עכשיו, אני רוצה להעביר הלאה את ההודעה, אבל שיכלול רק את ההודעה האחרונה ללא כל השרשור
אני משתמש בגוגל סקריפט (שהיא JS) כדי לקבל את ההודעה, וההודעה מגיעה קודם עם התשובה האחרונה ומתחתיו כל השרשור כציטוטהשאלה מה הדרך הכי נכונה לעשות זאת?
(מקווה שהייתי ברור...) -
@yossiz תודה
אני אנסה להסביר את עצמי למרות שאחד מהתכונות שלי הוא קושי בהסברה (לכל אדם יש חסרונות, לא?) וגם קושי בהבנה...בשאלות הראשונות שלי היה לי שאלה שאני מקבל את הקוד עם ירידת שורה בסוף
על זה עדיין לא קיבלתי תשובה סופית,
אתה טענת שצריך לומר שהיה במקור ירידת שורה, אבל אני ניסיתי לשלוח מייל לעצמי עם מילה אחד שאז בוודאי לא ירדתי שורה אבל לאחר שעשיתי ENCODE קיבלתי את המילה עם סימן ירידת שורה בסוף המילה, כזה "%0D%0A"
אז אולי צריך לומר שבכל ג'ימייל שאני שולח יש בסוף שורה ריקה או שגם זה לא?אחרי זה כשאמרת לי להשתמש עם content.trim() הסתדר השורה חדשה בסוף
ואז עברתי לשלב הבא שרציתי, וזה לשלוח את הטקסט מהמייל לאחר שעבר ENCODE ואז נתקלתי בבעיה האמיתית, ה-API שאיליו אני רוצה לשלוח את הטקסט מהמייל לאחר שעשיתי ENCODE לא מרשה לי לשלוח לו טקסט עם ירידת שורה באמצעאז האמת שזה כבר נושא חדש, איך לשלוח טקסט כזה, אבל אצלי זה היה הכל פונקציה אחת אז שאלתי באותו נושא
אז יש לי שאלה, האם זה שה-API לא נותן לי לשלוח טקסט שלם שיש בתוכו כמה שורות זה קשור לAPI וצריך לדעת איך לשלוח לה-API הספיציפי,
או שזה בכלל קשור לזה שזה JSONפשוט כדי שאני אדע מה לשאול..
-
@yossiz סליחה, שוב לא הסברתי את עצמי טוב
אחרי ה-encode אני מנסה לשלוח את זה לAPI אבל הAPI לא מוכן לקבל את זה
זה השגיאה {"responseStatus":"EXCEPTION","exceptionClass":"IllegalArgumentException","exceptionMessage":"Cannot parse JSON: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value\n at [Source: java.io.StringReader@21b03df3; line: 1, column: 41]","nestedException":null,"yemotAPIVersion":6}
ניסיתי לשנות ל n\ אז הוא אומר לי Invalid argument -
@yossiz אמר בENCODING ללא ירידת שורה:
זה מה שאתה מקבל אחרי encodeUri
בדקתי, לא היה ירידת שורה לפני האינקוד,
אבל עם זהlet res = encodeURI(content.trim());
זה עובד
אבל עכשיו אני מנסה לשלוח מחרוזת שיש בה ירידת שורה באמצע, והוא לא נותן לי ככה %0D%0A וגם לא כךn/
-
@yossiz הרי זה מה שניסיתי לפני ששאלתי
הנה מה שקבלתי HELLO%0D%0A -
@yossiz אמר בENCODING ללא ירידת שורה:
לדעתי אתה מעביר מחרוזת שיש בו כבר ירידת שורה.
לא מה שאני יודע
(אולי אתה יודע, אם בג'ימייל, זה מגיע עם ירידת שורה בסוף)@yossiz אמר בENCODING ללא ירידת שורה:
הפונקציה לא אמורה להוסיף ירידת שורה וגם בבדיקה פשוטה בקונסול זה לא מוסיף.
אז מה אני עושה שזה כן מוסיף?
-
@yossiz זה משנה?
אני מנסה בJS,
כתבתיlet res = encodeURI(content);
ואני מקבל עם '%0D%0A' -
כשאני עשה ENCODE אני מקבל את הטקסט עם ירידת שורה בסוף
למה זה? והאם יש אפשרות שלא?ב. אם אין אפשרות שלא, האם ניתן להחליף את כל המילים הרלוונטיות חוץ מהאחרון, ולהחליף את האחרון במשהו אחר?
-
@odeddvir אמר בעזרה | תרגום/המרת קטע מPHP ל JS:
@שאול-נ-י אתה צריך להמיר את התגובה למחרוזת, כמו שעשית בהדפסה, ואז לחפש את הערך:
r.getContextText()
(הערת אגב: על זה נאמר חכמים היזהרו בדבריכם, הפקודה 'Context' אינה נכונה צריך להיות 'Content'
שעות ישבתי על זה עד שאחזתי מה הבעיה )
הצלחתי לקבל את הקובץ הגדול בשלוחה, ועכשיו אני רוצה לתת שם לקובץ חדש מספר אחד גדול יותר מהקובץ האחרון, אז ניסיתי ככה
function myFunction() { let r = UrlFetchApp.fetch('http://google.com'); let b = r.getContentText() Logger.log(b) let i = b.lastIndexOf("wav") let a = b.substr(i-4,3); let u = a+1 Logger.log (u) }
ומה שיוצא שהוא נותן שם עם מספר נוסף ולא מספר גבוה יותר (1891 במקום 190)
אז איך כן עושים את זה? -
@ass אמר בקוד להעתקת קבצים משרת לשרת:
צריך למצוא את התאריך יצירה האחרון באון דרייב, לא? כי שם זה הקבצים החדשים...
לא, כי אני מניח שאתה לא רוצה להעלות את כל הקבצים כל פעם מחדש אלא אתה רוצה לעדכן רק החדשים.
אז בשביל זה אתה צריך לדעת מה הקובץ החדש ביותר בשלוחה שכבר העלית, ואז לחפש אצלך את הקבצים החדשים יותר מהתאריך האחרון שהעלית, ולהעלות אותם
חיפוש תאריך ושעה הכי קרוב
חיפוש תאריך ושעה הכי קרוב
חיפוש תאריך ושעה הכי קרוב
ריצה בלופ מהאחרון לראשון בJS
ריצה בלופ מהאחרון לראשון בJS
חילוץ חלק מJSON בPHP
ENCODING ללא ירידת שורה
חתיכת חלק מהודעה בג'ימייל
פקודה לשינוי שם קובץ לפי תאריך לועזי
חתיכת חלק מהודעה בג'ימייל
פקודה לשינוי שם קובץ לפי תאריך לועזי
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
ENCODING ללא ירידת שורה
עזרה | תרגום/המרת קטע מPHP ל JS
קוד להעתקת קבצים משרת לשרת