Code get API data từ Google App Script chèn vào bảng Sheet
Ví dụ kết nối api KiotViet
// lấy token và cache token
function getKiotVietToken(clientId, secretKey) {
var cache = CacheService.getScriptCache();
var cacheKey = “kiotVietToken”;
var cachedToken = cache.get(cacheKey);if (cachedToken != null) {
return cachedToken;
}var payload = {
scopes: “PublicApi.Access”,
grant_type: “client_credentials”,
client_id: clientId,
client_secret: secretKey,
muteHttpExceptions: true
};var options = {
method: “post”,
payload: payload
};var response = UrlFetchApp.fetch(“https://id.kiotviet.vn/connect/token”, options);
var data = response.getContentText();
var jsonData = JSON.parse(data);if (jsonData.access_token) {
var token = jsonData.token_type + ” ” + jsonData.access_token;
var cacheExpirationInSeconds = 3600*23; // 23 hour
cache.put(cacheKey, token, cacheExpirationInSeconds);
return token;
} else {
Logger.log(“Error in getting token: ” + JSON.stringify(jsonData));
return false;
}
}// get dữ liệu kiot
function kiotVietCall(retailer, token, apiEndpoint, query) {
var url = “https://public.kiotapi.com/” + apiEndpoint + “?” + queryString(query);var options = {
method: “get”,
headers: {
“authorization”: token,
“cache-control”: “no-cache”,
“content-type”: “application/json”,
“retailer”: retailer
}
};try {
var response = UrlFetchApp.fetch(url, options);
return response.getContentText();
} catch (error) {
Logger.log(“Error in API call: ” + error);
return false;
}
}function queryString(params) {
return Object.keys(params)
.map(function (key) {
return key + “=” + encodeURIComponent(params[key]);
})
.join(“&”);
}// tạo vòng lặp lấy tất cả các page mỗi page 100sp
function processKiotVietData(clientId, secretKey, spreadsheetId, sheetName) {
var token = getKiotVietToken(clientId, secretKey);if (!token) {
return;
}var pageSize = 100; // tối đa 100sp / trang
var currentItem = 0;
var allData = [];var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName(sheetName) || spreadsheet.insertSheet(sheetName);do {
var response = kiotVietCall(‘kaion’, token, ‘products’, {
‘currentItem’: currentItem,
‘pageSize’: pageSize,
‘orderBy’: ‘name’, //modifiedDate //name //id
‘includeInventory’: true,
‘includePricebook’: false,
‘IncludeSerials’: false,
‘IncludeBatchExpires’: false,
‘isActive’: true
});if (response) {
var data = JSON.parse(response);
var inventoryData = data.data;if (inventoryData && inventoryData.length > 0) {
for (var i = 0; i < inventoryData.length; i++) {
var item = inventoryData[i];
var itemId = item.modifiedDate;
var itemCode = item.code;
var itemName = item.name;
var itemBasePrice = item.basePrice;
var inventories = item.inventories;
var onHandLHP = inventories[0].onHand;
var onHandHV = inventories[1].onHand;allData.push([itemId, itemCode, itemName, itemBasePrice, onHandLHP, onHandHV]);
}currentItem += pageSize;
} else {
break; // Thoát khỏi vòng lặp nếu không có dữ liệu
}
}} while (inventoryData.length > 0);
if (allData.length > 0) {
sheet.clear();
sheet.appendRow([“Ngày sửa”, “Mã hàng”, “Tên Sản Phẩm”, “Giá PM”, “Tồn LHP”, “Tồn HV”]);
sheet.getRange(sheet.getLastRow() + 1, 1, allData.length, allData[0].length).setValues(allData);
}// Đổi màu ô theo điều kiện
// Lấy dữ liệu từ sheet “data_kiot”
var dataSheet = spreadsheet.getSheetByName(“data_kiot”);
var dataRange = dataSheet.getDataRange();
var dataValues = dataRange.getValues();// Lấy dữ liệu từ sheet “Bảng giá”
var priceSheet = spreadsheet.getSheetByName(“Bảng giá”);
var priceRange = priceSheet.getDataRange();
var priceValues = priceRange.getValues();// Lặp qua từng dòng trong sheet “Bảng giá”
for (var i = 1; i < priceValues.length; i++) {
var priceCode = priceValues[i][0];
var priceCell = priceRange.getCell(i + 1, 1);// Bỏ qua ô trống trong sheet “Bảng giá”
if (priceCode.trim() === “”) {
continue;
}// Tìm mã sản phẩm trong sheet “data_kiot”
var found = false;
for (var j = 1; j < dataValues.length; j++) {
var dataCode = dataValues[j][1];// Bỏ qua ô trống trong sheet “data_kiot”
if (dataCode.trim() === “”) {
continue;
}// Nếu mã sản phẩm khớp, đổi màu xanh lá cây
if (priceCode === dataCode) {
dataSheet.getRange(j + 1, 2).setBackground(“#00FF00”); // Xanh lá cây
found = true;
break;
}
}// Nếu không tìm thấy khớp, đổi màu sang đỏ nhạt
if (!found) {
priceCell.setBackground(“#FFCCCC”); // Đỏ nhạt
}
}
}// Gọi hàm processKiotVietData với các tham số tương ứng
var clientId = “87bcb320-4237-4edc-ba9a-4d944d84bb45”;
var secretKey = “2F6AD76E9EC1C4E6308AAC9A88952E6C96A8F42A”;
var spreadsheetId = “1msl6OTq1zGDI1HmJC_w7Cr-13e4_S7phzEv6f7uzlGE”;
var sheetName = “data_kiot”;processKiotVietData(clientId, secretKey, spreadsheetId, sheetName);
