הקראה מקובץ אקסל
-
@י-ע מה כתבת לו? בדיוק
-
@עידו
אני צריך שישמע את כל ההיסטוריה
אז זה טוב שהוא ישמע את כל ההודעות....ושלחתי לו
הישלום אני צריך קובץ גוגל שיטס שמתעדכן אונליין מקובצי YMGR מימות המשיח
כמפורט בתיעוד המצורף...
אני צריך שיתעדכן מהקובץ שנמצא בתיקייה Points שבשלוחה הראשית
שם הקובץ points_log.2025-11
מצרף לך את התיעוד ודוגמא מהקובץ....
-
@י-ע
תכתוב לי לפי התיעוד הבא סקריפט לגוגל סקריפט שמושך דו"ח ומכניס אותו בצורה מסודרת לתוך שיטסהפקת דוח מקובץ ymgr
הפקודה היא - RenderYMGRFileהפרמטרים הנדרשים
פרמטר תיאור סוג הערות / דוגמא
token טוקן string
wath מיקום הקובץ במערכת string ivr2:/ymgtTest.ymgr
convertType סוג הקובץ להנפקה. סוגים אפשריים: html / csv / json string רק במקרה של בקשת json תיהיה תגובה של json ממש. בשאר המקרים התגובה תיהיה הקובץ עצמו (Blob)
notLoadLang האם לא להשתמש בקבצי שפה/תרגום לעמודות/ערכים 0/1 באם ערך זה הוא 1 התרגום יהיה נקי ומדוייק של הymgr ללא תוספות/הסתרות עמודות/שינויי שמות לעמודות. כבחירת מחדל מבצע תרגום גם שמבקשים json.
renderLanguage שפת חיפוש תרגומים [A-Z] ניתן לבקש תרגום לפי שפה. בחירת מחדל HE.
חישוב סדר המרת ותרגום עמודות:
כל שלב דורס תרגום קודם באופן שהוא לא מוחק אותו אלא דורס תרגומים שיש עליהם הגדרה ספציפית.קובץ ראשי - יש תרגום כללי (בשרת של ימות המשיח).
קובץ ספציפי (למשל, קובץ ל ApprovalAll)
קובץ ברמת מערכת לפי השפה שנבחרה.. למשל מחפש קובץ: YMGRLangs\EN\ApprovalAll.ini
קובץ ברמת מערכת - מחפש את שם הקובץ בסיומת ini בתוך תיקייה YMGRLangs שצריכה להיות תחת התיקיה הראשית של המערכת שבתוכה קובץ הini.
קובץ ברמת שלוחה לפי השפה שנבחרה.. למשל מחפש קובץ: main\1\2\EN\ApprovalAll.ini
קובץ בשלוחה - קובץ באותה השלוחה של קובץ הymgr עם סיומת ini.
שימו לב! רמת שפה היא רמת מתחת קובץ ללא שפה. למשל, אם אני בוחר שפה EN אבל בקובץ בשלוחה לא בתיקיה של השפה יש לי ערכים המערכת תתחשב בתרגום שלהם.המענה בעת ההצלחה הוא הקובץ, כמו שנאמר, או במקרה של json:
מאפיין סוג הסבר דוגמא
responseStatus string סטטוס הפעולה OK
yALogsVersion string גירסת מערכת
data array מערך שמכיל את תוכן הקובץ
במקרה של שגיאה השגיאה תפורט כתגובה בjson.
בטח, בשמחה. על פי התיעוד שסיפקת, הכנתי עבורך סקריפט שתוכל להדביק ישירות בעורך הסקריפטים של Google Sheets.הסקריפט מבצע את הפעולות הבאות:
- מגדיר את כל הפרמטרים הדרושים (טוקן, נתיב קובץ וכו') במקום נוח לשינוי.
- שולח בקשה ל-API של "ימות המשיח" עם הפרמטרים שהוגדרו כדי לקבל את הדוח בפורמט JSON.
- מנתח את התשובה שקיבל.
- אם הבקשה הצליחה, הסקריפט מנקה את הגיליון הקיים, כותב את הכותרות של הדוח בשורה הראשונה, ואת כל הנתונים בשורות הבאות.
- במקרה של שגיאה, הוא ידפיס את השגיאה ללוגים של הסקריפט.
קוד הסקריפט
// ================================================================= // הגדרות עיקריות - יש למלא את הפרמטרים בחלק זה // ================================================================= // !!! יש להחליף לכתובת ה-API הנכונה של ימות המשיח const API_BASE_URL = "https://www.call2all.co.il/ym/api/RenderYMGRFile"; // הזינו את הטוקן שקיבלתם ממערכת ימות המשיח const API_TOKEN = "0000000000000000000000"; // <--- יש להחליף לטוקן האמיתי שלכם // הזינו את הנתיב המדויק של קובץ ה-ymgr const FILE_PATH = "ivr2:/ymgtTest.ymgr"; // <--- יש להחליף לנתיב הקובץ שלכם // מהו סוג הפלט הרצוי? מומלץ להשתמש ב-json לעבודה עם סקריפטים const CONVERT_TYPE = "json"; // האם לטעון קבצי שפה (0) או לקבל נתונים נקיים (1)? const NOT_LOAD_LANG = "1"; // באיזו שפה להציג את התרגומים (אם משתמשים בהם) const RENDER_LANGUAGE = "HE"; // שם הגיליון (Sheet) בתוך קובץ הגוגל שיטס אליו ייכנסו הנתונים const SHEET_NAME = "Report"; // <--- ודאו שקיים גיליון בשם זה או שנה את השם // ================================================================= // סוף אזור ההגדרות - אין צורך לשנות את הקוד שבהמשך // ================================================================= /** * פונקציה ראשית המושכת את הדוח ומכניסה אותו לגליון האלקטרוני */ function fetchReportToSheet() { // הרכבת כתובת ה-URL המלאה עם כל הפרמטרים const params = { token: API_TOKEN, wath: FILE_PATH, convertType: CONVERT_TYPE, notLoadLang: NOT_LOAD_LANG, renderLanguage: RENDER_LANGUAGE }; const queryString = Object.keys(params).map(key => key + '=' + encodeURIComponent(params[key])).join('&'); const fullUrl = API_BASE_URL + "?" + queryString; try { // שליחת הבקשה לשרת const response = UrlFetchApp.fetch(fullUrl, { 'muteHttpExceptions': true }); const responseText = response.getContentText(); const data = JSON.parse(responseText); // בדיקה אם הסטטוס שהתקבל הוא 'OK' if (data.responseStatus !== 'OK') { Logger.log("התקבלה שגיאה מהשרת: " + responseText); throw new Error("API Error: " + data.responseStatus); } // קבלת הנתונים מתוך המערך 'data' const reportData = data.data; if (!reportData || reportData.length === 0) { Logger.log("הדוח שהתקבל ריק, אין נתונים להוספה."); return; } // קבלת הגיליון הפעיל ושם הגיליון הספציפי const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const sheet = spreadsheet.getSheetByName(SHEET_NAME); if (!sheet) { throw new Error(`הגיליון בשם "${SHEET_NAME}" לא נמצא. יש ליצור אותו תחילה.`); } // ניקוי הגיליון לפני הכנסת הנתונים החדשים sheet.clear(); // קבלת הכותרות (המפתחות) מהאובייקט הראשון במערך הנתונים const headers = Object.keys(reportData[0]); // יצירת מערך דו-מימדי עבור הנתונים, כולל שורת הכותרות const valuesToWrite = [headers]; // שורה ראשונה - כותרות reportData.forEach(rowObject => { const rowValues = headers.map(header => rowObject[header]); valuesToWrite.push(rowValues); }); // כתיבת כל הנתונים לגיליון בבת אחת (פעולה יעילה יותר) sheet.getRange(1, 1, valuesToWrite.length, headers.length).setValues(valuesToWrite); Logger.log("הדוח נטען והוכנס לגיליון בהצלחה!"); } catch (e) { Logger.log("חלה שגיאה כללית בתהליך: " + e.toString()); } }הוראות שימוש:
-
פתיחת עורך הסקריפטים:
- פתחו את קובץ ה-Google Sheets שלכם.
- בתפריט העליון, לחצו על
Extensions(תוספים) >Apps Script.
-
הדבקת הקוד:
- ייפתח חלון חדש של עורך הסקריפטים.
- מחקו את כל הקוד הקיים בקובץ
Code.gs. - הדביקו את הקוד שסיפקתי למעלה.
-
הגדרת פרמטרים:
- עברו על החלק שנקרא
הגדרות עיקריותבתחילת הקוד. - חובה: שנו את הערך של
API_TOKENלטוקן האישי שלכם. - חובה: ודאו שהערך של
FILE_PATHהוא הנתיב המדויק לקובץ ה-ymgrשאתם רוצים למשוך. - ודאו ששם הגיליון ב-
SHEET_NAMEתואם לשם הגיליון בקובץ שלכם (לדוגמה: "Report"). אם לא קיים גיליון בשם זה, צרו אותו.
- עברו על החלק שנקרא
-
שמירה והרצה:
- לחצו על סמל השמירה (דיסקט) כדי לשמור את הפרויקט.
- כדי להריץ את הסקריפט, ודאו שהפונקציה
fetchReportToSheetנבחרה בתפריט הבחירה שליד כפתור ה-Debug, ולחצו עלRun.
-
אישור הרשאות (בפעם הראשונה בלבד):
- בפעם הראשונה שתריצו את הסקריפט, Google יבקש מכם הרשאות.
- לחצו על
Review permissions, בחרו את חשבון הגוגל שלכם. - ייתכן שתופיע אזהרה "Google hasn't verified this app". לחצו על
Advanced(מתקדם) ולאחר מכן עלGo to (your project name) (unsafe). - אשרו את ההרשאות שהסקריפט מבקש (גישה ל-Sheets וגישה לשירותים חיצוניים).
לאחר שתאשרו, הסקריפט ירוץ וימשוך את הנתונים מה-API ישירות לתוך הגיליון שהגדרתם. תוכלו לראות את התקדמות התהליך והודעות שגיאה (אם ישנן) בלחיצה על
Execution log(יומן ריצה) בעורך הסקריפטים. -
@עידו
נטפרי לא נותן לי להוסיף בגוגל סקריפט
אני נראה לי מתייאש.....
זה מסובך מדי.....
אם אתה מוכן שאני יתן לך מספר מערכת וסיסמה (או טוקן) ותריץ את זה אני אשמח -
@י-ע תשלח להם בקשה שיפתחו לך. אני מאמין שזה לא נגמר כאן, כי צריך לפעמים לסנן את תוכן הקובץ, יש לך עליו עבודה...
-
@עידו
אני לא מצליח לשמור את גוגל סקריפט
אז אין לי מה לשלוח להם שיפתחו -
@י-ע תשלח להם על זה בקשה, הם מודעים לענין
-
@עידו
אני יבקש למרות שאיך אומרים כבר התחיל לצאת לי המיץ
אבל תודה על הכל......