การแปลงข้อมูลจาก Google Sheets เป็น JSON โดยใช้หัวตารางเป็นคีย์สามารถทำได้โดยการใช้ Google Apps Script ซึ่งเป็นเครื่องมือที่ช่วยให้เราสามารถเขียนสคริปต์เพื่อจัดการกับเอกสาร Google ได้อย่างง่ายดาย
function sheetToJson() {
// เข้าถึงชีตที่ต้องการ (ชีตแรกในกรณีนี้)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
// ดึงข้อมูลทั้งหมดจากชีต
const data = sheet.getDataRange().getValues();
// ใช้แถวแรกเป็นหัวตาราง (คีย์ของ JSON)
const headers = data[0];
// เตรียม JSON ที่จะเก็บข้อมูล
const jsonArray = [];
// วนลูปผ่านข้อมูลแต่ละแถว เริ่มตั้งแต่แถวที่ 2 (เนื่องจากแถวแรกเป็นหัวตาราง)
for (let i = 1; i < data.length; i++) {
const rowData = {};
for (let j = 0; j < headers.length; j++) {
rowData[headers[j]] = data[i][j];
}
jsonArray.push(rowData);
}
// แปลงข้อมูลเป็น JSON
const jsonOutput = JSON.stringify(jsonArray, null, 2);
// แสดงผล JSON ใน Logger
Logger.log(jsonOutput);
// หรือคุณสามารถส่งออก JSON นี้ไปยังไฟล์ (เช่น Google Drive)
// const file = DriveApp.createFile('sheet_data.json', jsonOutput, MimeType.JSON);
}
อธิบายโค้ด:
- เข้าถึงชีตที่ต้องการ:
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
- เข้าถึงชีตแรกในสเปรดชีตปัจจุบัน - ดึงข้อมูลทั้งหมด:
const data = sheet.getDataRange().getValues();
- ดึงข้อมูลทั้งหมดในรูปแบบของอาร์เรย์สองมิติ - ใช้แถวแรกเป็นหัวตาราง:
const headers = data[0];
- เก็บหัวตาราง (แถวแรก) ไว้ในตัวแปรheaders
- เตรียม JSON Array:
const jsonArray = [];
- เตรียมอาร์เรย์ที่จะเก็บข้อมูลในรูปแบบ JSON - วนลูปผ่านข้อมูลแต่ละแถว: ใช้ลูป
for
เพื่อวนผ่านข้อมูลตั้งแต่แถวที่ 2 เป็นต้นไป และสร้างออบเจ็กต์ JSON สำหรับแต่ละแถว - แปลงเป็น JSON:
const jsonOutput = JSON.stringify(jsonArray, null, 2);
- แปลงอาร์เรย์ของข้อมูลเป็น JSON - แสดงผล JSON:
Logger.log(jsonOutput);
- แสดง JSON ใน Logger (สามารถดูผลได้ที่ View > Logs)
การใช้งานเพิ่มเติม
หากคุณต้องการบันทึกไฟล์ JSON ลงใน Google Drive หรือใช้งานข้อมูล JSON ในวิธีอื่น ๆ คุณสามารถปรับปรุงสคริปต์เพิ่มเติมได้ตามความต้องการของคุณ
ขอให้สนุกในการพัฒนาของคุณ! 😊