עזרה | עזרה בקוד גוגל סקריפט ליבוא מימות לשיטס
-
אני צריך לייבא קובץ ymgr של ימות המשיח (קובץ html) לטבלת גוגל שיטס בדומה לנוסחה IMPORTHTM
אני מעדיף את זה דרך סקריפט כי בנוסחה זה הרבה פעמים נתקע וכל הזמן הזה אין לי את התוכן הקודם ועוד הרבה יתרונות
בפועל הקוד הזה מוחק את התוכן הקודם בטבלה ובלוג הוא מדפיס את הטבלה רק הוא לא מכניס את הטבלה המיובאת לשיטס
אודה מאוד למי שיוכל להאיר את עיניfunction importAndSortData() { // מציג את הגישה לגיליון הפעיל באפליקציית גיליון האלקטרוני של Google. var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // מגדיר את ה-URL שיכיל את המידע שיש לייבא ולמיין. var url = "https://call2all.co.il/ym/api/RenderYMGRFile?wath=ivr2:Log/LogQueueAll.2023-06-12.ymgr&convertType=html¬LoadLang=0&token=igWGG9ZLy2fe"; // מציג את ה-URL בלוג. Logger.log("URL: " + url); // מבצע בקשת HTTP GET לכתובת ה-URL ומקבל את התגובה. var response = UrlFetchApp.fetch(url); var content = response.getContentText(); // מציג את תוכן התגובה בלוג. Logger.log("תוכן התגובה: " + content); // מוצא את מיקום התחלת הטבלה בתוך תוכן התגובה. var tableStartIndex = content.indexOf("<table"); // מוצא את מיקום סיום הטבלה בתוך תוכן התגובה. var tableEndIndex = content.indexOf("</table>"); // מציג את מיקום התחלת הטבלה ומיקום סיום הטבלה בלוג. Logger.log("מיקום תחילת הטבלה: " + tableStartIndex); Logger.log("מיקום סיום הטבלה: " + tableEndIndex); // אם לא נמצאה טבלה תקינה בתוך התוכן שהתקבל, מזריק שגיאה. if (tableStartIndex === -1 || tableEndIndex === -1) { throw new Error("לא נמצאה טבלה תקינה בתוך התוכן שהוזן"); } // חותך את קוד ה-HTML של הטבלה מתוך תוכן התגובה. var tableHtml = content.substring(tableStartIndex, tableEndIndex + 8); // מציג את קוד ה-HTML של הטבלה בלוג. Logger.log("קוד ה-HTML של הטבלה: " + tableHtml); // מנתח את קוד ה-HTML ומקבל את האיבר הראשי של הטבלה. var table = XmlService.parse(tableHtml).getRootElement(); var rows = table.getChildren("tr"); var data = []; // לולאה על כל שורה בטבלה. for (var i = 0; i < rows.length; i++) { var cells = rows[i].getChildren("td"); var rowData = []; // לולאה על כל תא בשורה. for (var j = 0; j < cells.length; j++) { var cellValue = cells[j].getText(); rowData.push(cellValue); } data.push(rowData); } // מציג את הנתונים לפני המיון בלוג. Logger.log("נתונים לפני המיון: " + JSON.stringify(data)); // ממיין את הנתונים לפי תוכן התא השני בכל שורה. var sortedData = data.sort(function(a, b) { var valueA = a[2]; var valueB = b[2]; if (typeof valueA === "string") { valueA = valueA.toLowerCase(); } if (typeof valueB === "string") { valueB = valueB.toLowerCase(); } if (valueA < valueB) { return -1; } if (valueA > valueB) { return 1; } return 0; }); // מציג את הנתונים לאחר המיון בלוג. Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData)); // מנקה את כל התוכן בגיליון. sheet.getDataRange().clearContent(); // מכניס את הנתונים הממוינים לגיליון מהתא A1 והלאה. if (sortedData.length > 0) { var numRows = sortedData.length; var numColumns = sortedData[0].length; sheet.getRange(1, 1, numRows, numColumns).setValues(sortedData); } // הודעת רישום var executionTime = new Date(); var functionName = "importAndSortData"; var logMessage = "פונקציה " + functionName + " בוצעה בהצלחה בתאריך " + executionTime + "."; Logger.log(logMessage); // מציג את הנתונים הממוינים בלוג. Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData)); // מציג את טווח הנתונים בגיליון בלוג. Logger.log("טווח הנתונים: " + sheet.getDataRange().getA1Notation()); }
-
-
-
@מיכאלוש הסתדרתי הנה
תודה רבהfunction importAndSortData() { // מציג את הגישה לגיליון הפעיל באפליקציית גיליון האלקטרוני של Google. var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // מגדיר את הקישור לייבוא הנתונים מקובץ JSON. var url = "https://call2all.co.il/ym/api/RenderYMGRFile?wath=ivr2:Log/LogQueueAll.2023-06-12.ymgr&convertType=json¬LoadLang=0&token=sscqLkQQg"; // מציג את הקישור בלוג. Logger.log("URL: " + url); // מבצע בקשת HTTP GET לכתובת ה-URL ומקבל את התגובה. var response = UrlFetchApp.fetch(url); var content = response.getContentText(); // מציג את תוכן התגובה בלוג. Logger.log("תוכן התגובה: " + content); // ממיר את התוכן של התגובה לאובייקט JavaScript. var jsonData = JSON.parse(content); // מציג את הנתונים בלוג. Logger.log("נתונים: " + JSON.stringify(jsonData)); var data = jsonData.data; // מציג את הנתונים לפני המיון בלוג. Logger.log("נתונים לפני המיון: " + JSON.stringify(data)); // ממיין את הנתונים לפי ערכי התא השני בכל שורה. var sortedData = data.sort(function(a, b) { var valueA = a["שעה"]; var valueB = b["שעה"]; if (typeof valueA === "string") { valueA = valueA.toLowerCase(); } if (typeof valueB === "string") { valueB = valueB.toLowerCase(); } if (valueA < valueB) { return -1; } if (valueA > valueB) { return 1; } return 0; }); // מציג את הנתונים לאחר המיון בלוג. Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData)); // מנקה את כל התוכן בגיליון. sheet.getDataRange().clearContent(); // מכניס את הנתונים הממוינים לגיליון מהתא A1 והלאה. if (sortedData.length > 0) { var numRows = sortedData.length; var numColumns = 8; var rangeValues = []; for (var i = 0; i < numRows; i++) { var rowData = []; rowData.push(sortedData[i]["שלוחה"]); rowData.push(sortedData[i]["טלפון"]); rowData.push(sortedData[i]["שעה"]); rowData.push(sortedData[i]["מצב התור"]); rowData.push(sortedData[i]["אורך המתנה למענה"]); rowData.push(sortedData[i]["אורך מענה שיחה"]); rowData.push(sortedData[i]["מספר שענה"]); rowData.push(sortedData[i]["QueueRecordPath"]); rangeValues.push(rowData); } sheet.getRange(1, 1, numRows, numColumns).setValues(rangeValues); } // הודעת רישום var executionTime = new Date(); var functionName = "importAndSortData"; var logMessage = "פונקציה " + functionName + " בוצעה בהצלחה בתאריך " + executionTime + "."; Logger.log(logMessage); // מציג את הנתונים הממוינים בלוג. Logger.log("נתונים ממוינים: " + JSON.stringify(sortedData)); // מציג את טווח הנתונים בגיליון בלוג. Logger.log("טווח הנתונים: " + sheet.getDataRange().getA1Notation()); }