combine_html_file
đọc dữ liệu html file trên Drive ---unknown
javascript
3 years ago
4.0 kB
4
Indexable
let spreadsheetId = ""; // Please set the Spreadsheet ID for putting the values. let sheetName = "DataRead"; // dùng để chuyển dữ liệu về let sdheetMasster = "getSheetId_Html_in_Folder"; // // hàm dùng để chuyển tiếng việt thành dạng không dấu -- -- - function removeVietnameseAccents(str) { const AccentsMap = [ 'aàảãáạăằẳẵắặâầẩẫấậ', 'AÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬ', 'dđ', 'DĐ', 'eèẻẽéẹêềểễếệ', 'EÈẺẼÉẸÊỀỂỄẾỆ', 'iìỉĩíị', 'IÌỈĨÍỊ', 'oòỏõóọôồổỗốộơờởỡớợ', 'OÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢ', 'uùủũúụưừửữứự', 'UÙỦŨÚỤƯỪỬỮỨỰ', 'yỳỷỹýỵ', 'YỲỶỸÝỴ', ]; for (const accent of AccentsMap) { const re = new RegExp(`[${accent.substr(1)}]`, 'g'); const char = accent[0]; str = str.replace(re, char); } return str; } // Đọc thông tin các file trong folder --- - async function getFileOnFolder(id) { const idFolder = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sdheetMasster).getRange('B1').getDisplayValue(); let idSheetOld = await returnDataforSheet(spreadsheetId, sdheetMasster, 'A3:D') let idA = idSheetOld.map(e => e[2]); console.log(idA) const files = DriveApp.getFolderById(idFolder).getFiles(); while (files.hasNext()) { const file = files.next(); const key = idA.filter(e => e == file.getId()).length console.log(key) if (key == 0) { if ( file.getMimeType() == 'text/html' //kiểm tra tên file và điều kiện ---- && removeVietnameseAccents(file.getName()).toUpperCase().includes(removeVietnameseAccents('RPM_return').toUpperCase()) ) { SpreadsheetApp.openById(spreadsheetId).getSheetByName(sdheetMasster).appendRow([ file.getLastUpdated(), file.getName(), file.getId(), file.getMimeType(), ]) await readContentOfHtmlByAppsScript(spreadsheetId, sheetName, file.getId()) } } } // await checkLastData() } // Đọc file html xuất từ SAP xuống và update vào sheet cho trước async function readContentOfHtmlByAppsScript(spreadsheetId, sheetName, fileId) { const html = DriveApp.getFileById(fileId).getBlob().getDataAsString(); let values = html.match(/<table[\w\s\S]+?<\/table>/gi); var ss = SpreadsheetApp.openById(spreadsheetId); var sheet = ss.getSheetByName(sheetName); var sheetId = sheet.getSheetId(); let col = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName).getLastColumn() let rowIndex = await myGetLastRow(spreadsheetId, sheetName, col); values.forEach(function (e) { let resource = { requests: [{ pasteData: { html: true, data: e, coordinate: { sheetId: sheetId, rowIndex: rowIndex } } }] }; Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId); rowIndex = sheet.getLastRow(); // console.log(JSON.stringify(resource)) }) } // Đọc dòng dữ liệu cuối cùng = tương đương với getLastRow() async function myGetLastRow(spreadsheet_id, spreadsheet_name, column) { const sheet = SpreadsheetApp.openById(spreadsheet_id).getSheetByName(spreadsheet_name); let data = sheet.getRange(1, column, sheet.getLastRow()).getValues(); while (typeof data[data.length - 1] !== 'undefined' && data[data.length - 1][0].length === 0) { data.pop(); } return data.length; } // Đọc dữ liệu bảng tính ----- async function returnDataforSheet(sheetid, sheetName, range) { const sheet = SpreadsheetApp.openById(sheetid).getSheetByName(sheetName); const rowSheet = range + sheet.getLastRow(); const data = sheet.getRange(rowSheet).getDisplayValues(); return data; }
Editor is loading...