• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    הקראה מקובץ אקסל

    שאלות ועזרה הדדית
    8
    34
    398
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ע
      עידו @י.ע נערך לאחרונה על ידי עידו

      @י-ע
      תכתוב לי לפי התיעוד הבא סקריפט לגוגל סקריפט שמושך דו"ח ומכניס אותו בצורה מסודרת לתוך שיטס

      הפקת דוח מקובץ 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.

      הסקריפט מבצע את הפעולות הבאות:

      1. מגדיר את כל הפרמטרים הדרושים (טוקן, נתיב קובץ וכו') במקום נוח לשינוי.
      2. שולח בקשה ל-API של "ימות המשיח" עם הפרמטרים שהוגדרו כדי לקבל את הדוח בפורמט JSON.
      3. מנתח את התשובה שקיבל.
      4. אם הבקשה הצליחה, הסקריפט מנקה את הגיליון הקיים, כותב את הכותרות של הדוח בשורה הראשונה, ואת כל הנתונים בשורות הבאות.
      5. במקרה של שגיאה, הוא ידפיס את השגיאה ללוגים של הסקריפט.

      קוד הסקריפט

      // =================================================================
      // הגדרות עיקריות - יש למלא את הפרמטרים בחלק זה
      // =================================================================
      
      // !!! יש להחליף לכתובת ה-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());
        }
      }
      

      הוראות שימוש:

      1. פתיחת עורך הסקריפטים:

        • פתחו את קובץ ה-Google Sheets שלכם.
        • בתפריט העליון, לחצו על Extensions (תוספים) > Apps Script.
      2. הדבקת הקוד:

        • ייפתח חלון חדש של עורך הסקריפטים.
        • מחקו את כל הקוד הקיים בקובץ Code.gs.
        • הדביקו את הקוד שסיפקתי למעלה.
      3. הגדרת פרמטרים:

        • עברו על החלק שנקרא הגדרות עיקריות בתחילת הקוד.
        • חובה: שנו את הערך של API_TOKEN לטוקן האישי שלכם.
        • חובה: ודאו שהערך של FILE_PATH הוא הנתיב המדויק לקובץ ה-ymgr שאתם רוצים למשוך.
        • ודאו ששם הגיליון ב-SHEET_NAME תואם לשם הגיליון בקובץ שלכם (לדוגמה: "Report"). אם לא קיים גיליון בשם זה, צרו אותו.
      4. שמירה והרצה:

        • לחצו על סמל השמירה (דיסקט) כדי לשמור את הפרויקט.
        • כדי להריץ את הסקריפט, ודאו שהפונקציה fetchReportToSheet נבחרה בתפריט הבחירה שליד כפתור ה-Debug, ולחצו על Run.
      5. אישור הרשאות (בפעם הראשונה בלבד):

        • בפעם הראשונה שתריצו את הסקריפט, Google יבקש מכם הרשאות.
        • לחצו על Review permissions, בחרו את חשבון הגוגל שלכם.
        • ייתכן שתופיע אזהרה "Google hasn't verified this app". לחצו על Advanced (מתקדם) ולאחר מכן על Go to (your project name) (unsafe).
        • אשרו את ההרשאות שהסקריפט מבקש (גישה ל-Sheets וגישה לשירותים חיצוניים).

      לאחר שתאשרו, הסקריפט ירוץ וימשוך את הנתונים מה-API ישירות לתוך הגיליון שהגדרתם. תוכלו לראות את התקדמות התהליך והודעות שגיאה (אם ישנן) בלחיצה על Execution log (יומן ריצה) בעורך הסקריפטים.

      י תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • י
        י.ע @עידו נערך לאחרונה על ידי

        @עידו
        נטפרי לא נותן לי להוסיף בגוגל סקריפט
        אני נראה לי מתייאש.....
        זה מסובך מדי.....
        אם אתה מוכן שאני יתן לך מספר מערכת וסיסמה (או טוקן) ותריץ את זה אני אשמח

        ע תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • ע
          עידו @י.ע נערך לאחרונה על ידי

          @י-ע תשלח להם בקשה שיפתחו לך. אני מאמין שזה לא נגמר כאן, כי צריך לפעמים לסנן את תוכן הקובץ, יש לך עליו עבודה...

          י תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • י
            י.ע @עידו נערך לאחרונה על ידי

            @עידו
            אני לא מצליח לשמור את גוגל סקריפט
            אז אין לי מה לשלוח להם שיפתחו

            ע תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • ע
              עידו @י.ע נערך לאחרונה על ידי

              @י-ע תשלח להם על זה בקשה, הם מודעים לענין

              י תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • י
                י.ע @עידו נערך לאחרונה על ידי

                @עידו
                אני יבקש למרות שאיך אומרים כבר התחיל לצאת לי המיץ
                אבל תודה על הכל......

                ע ז 2 תגובות תגובה אחרונה תגובה ציטוט 1
                • ע
                  עידו @י.ע נערך לאחרונה על ידי

                  @י-ע יבקשו ממך להעלות להם הסרטת מסך עם תעבורת הרשת, אז תעשה הסרטת מסך, כנס לגוגל סקריפט תדביק שם את הקוד ותלחץ על שמירה שיראו שקופצת ההודעה שא"א לשמור.
                  שלח להם את זה בפניה ותכתוב למה זה משמש.
                  מקוה שיזרז את התהליך.

                  תגובה 1 תגובה אחרונה תגובה ציטוט 2
                  • ז
                    זרח @י.ע נערך לאחרונה על ידי

                    @י-ע הסתדרת?
                    אם זה למטרה תורנית. אני עוזר בחינם.

                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • I
                      IV @HTML נערך לאחרונה על ידי

                      @HTML
                      אני לא הסתדרתי כי השאלה שלי הייתה שני דברים
                      1 איך מקריאים מאקסל
                      2 איך עוברים אחרי זה לסליקת אשראי
                      אבל בסוף החלטתי שאני כן רוצה להקריא מגוגל שיטס ושאלתי את הבינה ואחרי מו"מ ארוך איתו הוא נתן לי הגדרות אלו

                      type=data_read
                      readfile=yes
                      readfile_to_json=yes
                      readfile_url=https://docs.google.com/spreadsheets/d/e/XXXXXXXXXXXXXXX/pub?output=csv
                      readfile_search_column=6
                      readfile_search_value=callerid
                      
                      readfile_not_found=מספרך אינו מופיע במערכת.
                      readfile_not_found_go=exit
                      
                      say=שלום $(1), על פרשת $(3), עליה $(5). הנך חייב $(2).
                      
                      ; לאחר ההקראה – מעבר לשלוחה שהיא התפריט
                      goto=4/3
                      
                      

                      ובשלוחה 4/3 עשיתי תפריט שאם רוצה לשלם עכשיו יעבור לשלוחת סליקת אשראי שאגב גם הגדרות אלו נתן לי הבינה
                      אבל משום מה שלוחת ההקראות לא עובד, הוא בכלל לא נכנס לשלוחה אם משהו יכול לעזור לי בנושא אשמח מאוד!
                      תודה רבה לכל העוזרים והמסייעים.
                      נ.ב. אני לא מבין לא בAPI ולא בסקריפטים.

                      C א ע 3 תגובות תגובה אחרונה תגובה ציטוט 0
                      • C
                        CUBASE @IV נערך לאחרונה על ידי

                        @IV זה לא עובד מהסיבה הפשוטה - לבינה אין שום מושג על ההגדרות במערכות של ימות ולכן היא מחרטטת הגדרות פיקטיביות לגמרי!

                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • א
                          אביי ורבא @IV נערך לאחרונה על ידי

                          @IV אני מוכר קבצי גוגל שיטס כאלה ב200 ש"ח

                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • ע
                            עידו @IV נערך לאחרונה על ידי

                            @IV תסתכל כאן הרעיון ליצור סקריפט שיוצר מכל שורה קובץ TTS ששמו כשם הזיהוי המבוקש, מעלה אותו לשלוחת השמעה אישית, משם תעשה העברה בסיום לשלוחת סליקה ושכל אחד יכניס את הסכום שהוא צריך לשלם, אם צריך שכל אחד יוגדר לו מראש כמה הוא צריך לשלם צריך שהסקריפט יעשה קובץ BillingSum.ini שבתוכו יש זיהוי=סכום ולכתוב בשלוחת הסליקה billing_sum=from_file. כדאי לעבור על התיעוד.

                            אם אתה עדיין מסתבך ותרצה שאבנה לך את זה (בתשלום) תוכל לפנות אליי בstamandsefer@gmail.com.

                            תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • פוסט ראשון
                              פוסט אחרון