ตั้งค่า Google Sheets Sync

กลับ
รายละเอียดการเชื่อมต่อ
>
>
รหัส 44 ตัวอักษรที่อยู่ใน URL ของ Google Sheets
รหัส API Key จาก Google Cloud Console (จำเป็นสำหรับการดึงข้อมูลจริง)
รูปแบบ JSON เพื่อแมปคอลัมน์จาก Sheet (Index 0) เข้าสู่ฐานข้อมูล
สถานะการเชื่อมต่อ

ทำงานปกติ
ดึงข้อมูลล่าสุด: ยังไม่เคยดึงข้อมูล

ข้อควรระวัง
  • ต้องแชร์ Spreadsheet ให้อ่านได้ (Anyone with the link) หรือผ่าน Service Account
  • วันที่ใน Google Sheets ควรใช้ Format `YYYY-MM-DD` เพื่อง่ายต่อการนำเข้า MySQL
  • หากต้องการดึงอัตโนมัติ ต้องตั้ง Cron Job เรียกใช้ API Endpoint ของระบบ
document.addEventListener("DOMContentLoaded", function() { const connAPI = document.getElementById("connAPI"); const connPublic = document.getElementById("connPublic"); const apiKeyContainer = document.getElementById("apiKeyContainer"); function toggleApiKey() { if (connAPI.checked) { apiKeyContainer.style.display = "block"; } else { apiKeyContainer.style.display = "none"; } } connAPI.addEventListener("change", toggleApiKey); connPublic.addEventListener("change", toggleApiKey); toggleApiKey(); // Initial check }); document.getElementById("testSyncBtn").addEventListener("click", function() { const btn = this; btn.disabled = true; btn.innerHTML = \' กำลังทดสอบ...\'; fetch("' . BASE_URL . '/settings/google-sheets/test", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "csrf_token=' . $csrf_token . '" }) .then(async res => { const text = await res.text(); try { return JSON.parse(text); } catch (e) { // คืนค่า Text ดิบๆ ไปเลยเพื่อให้ User เห็นว่า Server ฟ้องว่าอะไร throw new Error("Server ไม่ได้ตอบกลับเป็น JSON: " + text.substring(0, 100)); } }) .then(data => { btn.disabled = false; btn.innerHTML = \' ทดสอบดึงข้อมูล\'; if (data.status === "success") { alert("เชื่อมต่อสำเร็จ! พบข้อมูล " + data.rows + " แถว\\nตัวอย่างรายการแรก: " + JSON.stringify(data.preview)); } else { alert("เกิดข้อผิดพลาด: " + data.message); } }) .catch(err => { btn.disabled = false; btn.innerHTML = \' ทดสอบดึงข้อมูล\'; alert("Error: " + err.message); }); }); '; ?>