คู่มือ · ข้อมูลสด
ต่อ API หรือฐานข้อมูลของคุณเอง แล้วให้ตัวเลขไหลเข้าตารางเอง
หน้านี้เขียนให้คนที่จะตั้งค่าครั้งแรก ตั้งเสร็จครั้งเดียว คนอื่นในทีมแค่กด "ใส่ลงตาราง" โดยไม่ต้องเห็น URL, SQL หรือรหัสผ่านสักตัว
ทำไมทำบนเดโมไม่ได้
เดโมสาธารณะเปิดให้ทุกคนใช้ร่วมกัน ถ้าให้เพิ่มแหล่งข้อมูลได้ ใครก็สั่งเซิร์ฟเวอร์ของเดโมไปดึง URL ไหนก็ได้ จึงปิดไว้ และเหลือแค่ 3 แหล่งตัวอย่างให้ลอง
ของจริงต้องรันบนเซิร์ฟเวอร์ของคุณเอง ใช้เวลาราว 15 นาทีตามชุดเริ่มต้นด้านล่าง
ต่ออะไรได้บ้าง
สี่ชนิด ทุกชนิดคนใช้งานเห็นเหมือนกันหมด คือเป็นตารางที่อัปเดตเองตามรอบที่ตั้งไว้
- REST API (JSON)
URL, auth header ถ้าต้องใช้ และจำนวนแถวสูงสุด · API ที่แบ่งหน้าจะดึงหน้าถัดไปให้เอง
https://api.example.com/v1/sales?page=1
- CSV / Google Sheets
ลิงก์ที่ได้ไฟล์ CSV · ใน Google Sheets ใช้ ไฟล์ → แชร์ → เผยแพร่ไปยังเว็บ → CSV
https://docs.google.com/spreadsheets/d/e/…/pub?output=csv
- PostgreSQL
connection string กับคำสั่ง SELECT หนึ่งคำสั่ง · รันใน transaction แบบอ่านอย่างเดียวเสมอ
postgres://reader:••••@db.example.com:5432/shop
- MySQL / MariaDB
เหมือน PostgreSQL · รันคำสั่งได้ทีละคำสั่งเท่านั้น
mysql://reader:••••@db.example.com:3306/shop
ชุดเริ่มต้น
สี่ขั้น ทำตามลำดับ คำสั่งทุกบล็อกกดคัดลอกได้
เอาโค้ดมาและติดตั้ง
ต้องมี Node.js 22.12 ขึ้นไป หรือ 24
คำสั่งgit clone https://github.com/SuruchBoss/ExcelToGo.git cd ExcelToGo npm install cp .env.example .env.local
ตั้งค่าใน .env.local
สองบรรทัดแรกต้องมี บรรทัดที่สามใช้เฉพาะเมื่อฐานข้อมูลอยู่ในเครือข่ายภายใน
คำสั่ง# เปิดฟีเจอร์ข้อมูลสด และเป็นรหัสที่ใช้ปลดล็อกในแอป # สร้างด้วย: openssl rand -base64 32 SOURCES_ADMIN_TOKEN= # ใช้เข้ารหัส auth header และ connection string ที่เก็บบนเซิร์ฟเวอร์ # ใส่ข้อความยาว ๆ อะไรก็ได้ SOURCES_SECRET_KEY= # เฉพาะฐานข้อมูลที่อยู่ใน network ภายใน (เช่น RDS ใน VPC) # SOURCES_ALLOWED_DB_HOSTS=db.internal
อย่าตั้ง NEXT_PUBLIC_DEMO_MODE ถ้าตั้งไว้ ฟีเจอร์นี้จะถูกปิดเหมือนบนเดโม
รันบนเซิร์ฟเวอร์ที่เขียนไฟล์ได้
แหล่งข้อมูลที่ตั้งไว้ถูกเก็บในไฟล์ data/sources.json บนเซิร์ฟเวอร์ จึงต้องรันบนเครื่องที่มีดิสก์เขียนได้และไม่หายเมื่อรีสตาร์ต เช่น VPS, Docker ที่ผูก volume ไว้ หรือเครื่องในบริษัท
คำสั่งnpm run build npm run start
Vercel ใช้กับฟีเจอร์นี้ไม่ได้ เพราะดิสก์บน Vercel อ่านได้อย่างเดียว บันทึกแหล่งข้อมูลไม่ลง
เชื่อมต่อในแอป
เปิด /app → กดแท็บ "ข้อมูลสด" → ใส่ SOURCES_ADMIN_TOKEN → "เชื่อมต่อข้อมูลใหม่" → เลือกชนิด → "ทดสอบการเชื่อมต่อ" ดูว่าได้กี่แถวกี่คอลัมน์ → บันทึก เสร็จแล้วคนในทีมกด "ใส่ลงตาราง" ได้เลย
อยากลองก่อนต่อของจริง ใช้ API สาธารณะอย่าง https://jsonplaceholder.typicode.com/users ได้ · ที่อยู่ในเครื่อง (localhost) และเครือข่ายภายในถูกกันไว้
สิ่งที่ระบบกันไว้ให้ และสิ่งที่คุณต้องทำเอง
- ต้องมีโทเคนเสมอ
- ไม่ได้ตั้ง SOURCES_ADMIN_TOKEN เท่ากับฟีเจอร์ปิด ไม่ใช่เปิดให้ทุกคน · โทเคนอยู่แค่ในแท็บนั้น ปิดเบราว์เซอร์แล้วต้องใส่ใหม่
- ไม่ยิงเข้าเครือข่ายภายใน
- localhost, 10.x, 192.168.x และ metadata ของ cloud ถูกกันทุกครั้ง รวมถึงหลัง redirect · ฐานข้อมูลภายในต้องระบุชื่อ host ใน SOURCES_ALLOWED_DB_HOSTS ก่อน
- รหัสผ่านถูกเข้ารหัส และไม่ถึงเบราว์เซอร์
- auth header และ connection string ถูกเข้ารหัสด้วย SOURCES_SECRET_KEY ถ้าไม่มีคีย์ ระบบจะไม่ยอมบันทึก · คนใช้งานเห็นแค่ชื่อแหล่งข้อมูล
- SQL เขียนข้อมูลไม่ได้
- ทุกคำสั่งรันใน transaction แบบอ่านอย่างเดียว · แต่ระบบกันไม่ได้ว่าคำสั่งจะอ่านตารางไหน จึงควรสร้าง user ฐานข้อมูลที่อ่านได้เฉพาะตารางที่ต้องการ
"บันทึกบนคลาวด์" ไม่ใช่การต่อฐานข้อมูล
แท็บก้อนเมฆคือการเก็บไฟล์งานไว้เปิดจากเครื่องอื่นและแก้พร้อมกัน ใช้ Supabase ของคุณเอง ไม่เกี่ยวกับการดึงข้อมูลจาก API หรือฐานข้อมูลเข้าตาราง
ถ้าต้องการ ให้สร้างโปรเจกต์ Supabase รันไฟล์ใน supabase/migrations แล้วใส่สองบรรทัดนี้ใน .env.local แท็บจะขึ้นมาเอง ใช้ anon key เท่านั้น ห้ามใช้ service-role key
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=