@שמואל-ש שורות 14-18 מגדירות את המשתנה options כאובייקט, שמועבר לאחמ"כ (שורה 20) לfetch כארגומנט אופציות,
שמגדיר את הבקשה כך שתישלח במתודת post, עם contentType מתאים, ועם payload (בד"כ נקרא body, אבל גוגל חייבים להיות שונים... 😏 ראה גם https://tchumim.com/post/112838) מתאים של אובייקט הdata - הנתונים שרוצים לשלוח לימות.
הקוד הבא יתן תוצאה זהה:
const response = UrlFetchApp.fetch(BASE_API_URL + 'UpdateExtension', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({
type: 'routing_yemot',
routing_yemot_number: '0773137770',
password: '1234',
token: `${YEMOT_USER}:${YEMOT_PASSWORD}`,
path: 'ivr2:1'
})
})
פשוט ככה זה יותר קריא.
ראה עוד:
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchurl,-params
שורה 20 היא שליחת הבקשה בפועל, שמגדירה את המשתנה response כHTTPResponse שהfetch החזיר,
לאחר מכן בשורה 21 מחלצים את התשובה כטקסט מתוך הHTTPResponse ע"י מתודת getContentText, שמחזירה סטרינג של הJSON - ולכן אני מפרסר אותו לאובייקט ע"י JSON.parse, כך שכעת responseJson מכיל את האובייקט שחזר בJSON מימות.
לאחר מכן בשורות 22-26 אני בודק את הערך responseStatus מתוך התגובה של ימות,
באם הוא לא שווה לOK אני זורק שגיאה עם מה שימות החזירו בערך message,
אם הוא שווה אני מדפיס לוג של "OK".
בד"כ אין צורך בבדיקה הזאת כיוון שאם יש שגיאה אמור לחזור ססטוס קוד של שגיאה, לדוגמה 400 או 500, אבל כך ימות עובדים. הם תמיד מחזירים 200, ו-responseStatus שאומר אם הפעולה הצליחה.
כנ"ל לגבי הצורך בresponseStatus.toUpperCase(), נתקלתי בחלק מהAPIs שלהם שמחזירים OK וחלק מחזירים ok (באותיות קטנות)... שימוש בבדיקה כזאת (ע"י המרה של הresponseStatus לאותיות גדולות והשוואה מול OK, אני מכוסה תמיד.