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;
}