שאלה בחיבור API מגוגל סקריפט
-
אני מנסה להתחבר ב API מגוגל סקריפט למערכת שלי בימות לצורך קבלת נתונים מקובץ ymgr במערכת (במודל קבלת נתונים)
ע"י הסקריפט הבא :function toyemot() { // משתנים לעריכת המשתמש const number = '**********' // :מספר המערכת const pass = '******' // :סיסמא const extension = '*' // :מספר השלוחה const name = 'ApprovalAll.ymgr'// :שם הקובץ // עד כאן משתנים לעריכת המשתמש const url = ('https://www.call2all.co.il/ym/api/'); const token = (number + ':' + pass); const path = ('ivr2:' + extension + '/'); downloadFile() function DownloadFile() { const download = JSON.parse(UrlFetchApp.fetch(url + 'DownloadFile?' + token + path + name)); if (download.responseStatus === 'OK') { var recipient = download.p050 var subject = download.p051 var body = download.p052 } }
כמובן הסקריפט מיועד לעבוד עם עוד פונקציות לדוגמא להעביר את הנתונים לעמודות בגוגל שיטס
הסקריפט מחזיר כמה שגיאות אבל לפני שאטפל בהם יש לי מספר שאלות- איך מקבלים נתונים רק מערך אחד בעמודה בקובץ ?
בסקריפט כתבתי בשורות 17-19 עם נקודה זה הצורה הנכונה ?
והאם עדיף לעבוד עם הקובץ בסיומת ymgr או html - איך מתקשרים עם הקבצים שנמצאים בתיקיית ApprovalOk שהשם שלהם כולל מספר מספרים בלתי צפויים ?
האם יש דרך לעקוף את השם המלא של הקובץ או רק ע"י הפקודהGetIVR2Dir
ואז לחכות לתגובת השרת ועל פי זה לבנות את שם הקובץ
- איך מקבלים נתונים רק מערך אחד בעמודה בקובץ ?
-
@מיכאלוש אמר בשאלה בחיבור API מגוגל סקריפט:
השם שלהם כולל מספר מספרים בלתי צפויים
לא ממש...
השם מורכב ממספר ההזמנה + זמן ביצוע (unix time) -
@מיכאלוש
ביצעתי בעבר כמה פרוייקטים מהסוג הזה של תקשור עם הקבצים של ימות.
אתה מנסה לממש המרה של קובץ ימות באמצעות js (שבזה משתמשים בגוגל סקריפט) לאובייקט מסוג json.
אם כן, אתה חייב שהפורמט של הקובץ בימות יהיה מתאים להמרה ל- json.
אם כן, הקובץ בסיומת HTML ודאי לא מתאים לך, כי אין שום קשר בינו לבין הפורמט של json
הקובץ בסיומת ymgr הוא מצויין, צריך לעשות בו התאמה מסויימת והוא יתאים לפורמט jsonאז ככה,
הפורמט של קובץ ymgr הוא:
key1#value1%key2#value2
key1#value1%key2#value2
כלומר: מפריד
#
בין הkey
לvalue
, מפריד%
בין ערך לערך, ומפריד של ירידת שורה בין רשומה לרשומה
הפורמט של json הוא
{key1:value1,key2:value2},{key1:value1,key2:value2}
כלומר: מפריד:
בין הkey
לvalue
, מפריד,
בין ערך לערך, וסוגריים מסולסלות{}
מקיפות כל איבר עם הפרדת,
.אם כן, אתה צריך לעשות החלפה של כל ה ה
#
ב:
, את כל ה%
ב,
ואת כל הירידת שורה ל},{
תוסיף את השורות האלו לקוד (החלפתי את הconst
לvar
, יותר נכון לכאורה)var download = UrlFetchApp.fetch(url + 'DownloadFile?' + token + path + name); download = '[{"' + download; download = download.replace(/#/g, '":"'); download = download.replace(/%/g, '","'); download = download.replace(/\n/g, '"},{"'); download = download + '"}]'; var file = JSON.parse(download);
מה שקיבלת כרגע זה את כל הקובץ באובייקט json במבנה של מערך המכיל את כל השורות, כאשר כל שורה מחולקת לאיברים של key ו value
כעת כדי לגשת לערך כל שהוא בקובץ את צריך לציין מספר שורה ו key או לחילופין לרוץ על כל המערך.
לדוגמא:var folder = file[0]["Folder]; var P050 = file[0]["P050"];
או
for (r=0;r<file.length;r++){ Logger.log(file[r]["Folder"]); }
לגבי שמות הקבצים,
לכאורה אתה חייב את השם המלא, אבל לשם מה אתה צריך את הקבצים מהתיקיה ההיא? -
@amp-Software-0
יש ws מיוחד שממיר קבצי ymgr לjsonhttps://call2all.co.il/ym/api/renderFile?wath=ivr2:OK/ApprovalAll.ymgr&convertType=json&token=****
-
@eliyahu לא ידעתי על זה.
זה באמת כלי מצויין
איפה התיעוד של זה? -
@eliyahu אמר בשאלה בחיבור API מגוגל סקריפט:
@amp-Software-0
יש ws מיוחד שממיר קבצי ymgr לjsonhttps://call2all.co.il/ym/api/renderFile?wath=ivr2:OK/ApprovalAll.ymgr&convertType=json&token=****
זה עוזר מאוד! איפה כל הדברים האלה מתועדים?
-
@eliyahu למה אין את זה בתיעוד??? 7ממה למה עוד אפשר להמיר שם?
-
-
@eliyahu
חבל באמת שאין תיעוד לזה..
היה לי מחשבה בעבר ליצור api להמרת קבצי ymgr לפורמטים שונים
זה דבר מאוד נצרך! -
@amp-Software-0 אמר בשאלה בחיבור API מגוגל סקריפט:
(החלפתי את ה const ל var, יותר נכון לכאורה)
אם אתה מגיע מעולם ה JavaScript של 2013 אתה צודק.
כיום זה חד משמעית לא נכון בשום צורה. -
@שמואל מה הפירוש? אם הייתי משתמש עם const לא הייתי יכול להגדיר אותו מחדש
?? -
@amp-Software-0 על
let
שמעת?
נ.ב.replace
מחליף רק פעם אחת. בשביל להחליף יותר מפעם אחת צריך להשתמש בreplaceAll
אבל כמובן כל זה לא רלוונטי למעשה, כיוון שיש API מוכן לזה. -
@avrham אמר בשאלה בחיבור API מגוגל סקריפט:
ממה למה עוד אפשר להמיר שם?
@eliyahu אמר בשאלה בחיבור API מגוגל סקריפט:
@avrham אמר בשאלה בחיבור API מגוגל סקריפט:
למה עוד אפשר להמיר שם
csv
htmlלמה = json, html , csv
ממה = ymgr -
@צדיק-תמים
נכון, אפשרי גם let (רק שיש לו הגבלות בנוגע לתחום ההצהרה שלו, אז יותר פשוט ה var)
בכל מקרה זה לא נוגע לדיון המקורי..
לגבי ה replace השתמשתי עם ביטוי רגלורלי (g) זה מחליף את הכל
תבדוק -
@amp-Software-0 אמר בשאלה בחיבור API מגוגל סקריפט:
נכון, אפשרי גם let (רק שיש לו הגבלות בנוגע לתחום ההצהרה שלו, אז יותר פשוט ה var)
הגבלות מועילות מאוד, הצהרה חוצת סקופים היא דבר רע שעלול לגרום להתנהגות לא צפויה
לא סתם הוסיפו את זה לשפה -
@eliyahu אמר בשאלה בחיבור API מגוגל סקריפט:
יש ws מיוחד שממיר קבצי ymgr לjson
https://call2all.co.il/ym/api/renderFile?wath=ivr2:OK/ApprovalAll.ymgr&convertType=json&token=****
מה פירוש השגיאה שמופיעה לי ?
{ "responseStatus":"Exception", "message":"wath is required", "file":"renderFile.ym", "Line":"12:19", "yALogsVersion":"1.0.7" }
@amp-Software-0 אמר בשאלה בחיבור API מגוגל סקריפט:
אבל לשם מה אתה צריך את הקבצים מהתיקיה ההיא?
למניעת כפילויות חשבתי אולי להשתמש בקבצים שבתיקייה הזאת שבהם אחרי שקיבלתי את הנתונים אני יכול למחוק את הקבצים למניעת כפילויות
אבל אם זה לא אפשרי ללא שם מלא של הקובץ אני ישתמש בקבצים שבתיקייה הראשית ואצטרך למצוא פתרון אחר למניעת כפילויות -
@מיכאלוש אמר בשאלה בחיבור API מגוגל סקריפט:
מה פירוש השגיאה שמופיעה לי ?
כתוב בהודעה שחסר את פרמטר wath
-
@eliyahu אולי לא מילאתי אותו נכון ?
איך ממלאים אותו כך ?https://call2all.co.il/ym/api/renderFile?wath=ivr2/1:OK/ApprovalOk.ymgr&convertType=json&token=0733******:123456
-
-
@שמחה-זו-הסיסמא השגיאה עדיין מופיעה לי
{"responseStatus":"Exception","message":"Error retrieving file path information","file":"renderFile.ym","Line":"20:19","yALogsVersion":"1.0.7"}
מה לא נכון בצורה שהגדרתי את הנתיב לקובץ ?
הקובץ נמצא בשלוחה 1 וזה השם המלא שלו ?wath=ivr2:1:OK/ApprovalOk.ymgr