ข้ามไปยังเนื้อหาหลัก

คู่มือ · ข้อมูลสด

ต่อ API ของคุณเอง แล้วให้ตัวเลขไหลเข้าตารางเอง

ใช้ได้บนเว็บนี้เลย ไม่ต้องติดตั้งอะไร เบราว์เซอร์ของคุณเป็นคนดึงข้อมูลเอง ถ้าเครื่องคุณเปิด API ได้ แอปก็ดึงได้

ต่อ API บนเว็บนี้ได้เลย

REST API (JSON) หรือไฟล์ CSV ที่เครื่องของคุณเข้าถึงได้ — API สาธารณะ, API ในออฟฟิศ หรือ API ที่ต้องต่อ VPN ก่อน

URL, header สำหรับยืนยันตัวตน และข้อมูลที่ดึงมา ไม่ผ่านเซิร์ฟเวอร์ของเรา · ค่าของ header เก็บไว้แค่ในแท็บที่เปิดอยู่ ปิดแท็บแล้วต้องใส่ใหม่

  1. เปิดแอป → แท็บ "ข้อมูลสด" → "ต่อ API ของคุณ" (ยังไม่มี API? กด "ลองต่อ" ที่ API ตัวอย่างในแผงเดียวกัน ฟอร์มจะกรอกให้)

  2. ใส่ชื่อ, URL และ header ถ้า API ต้องใช้ (เช่น Authorization: Bearer …)

  3. กด "ทดสอบ" — ครั้งแรกที่ต่อ API ที่ใหม่ แอปโหลดหน้าใหม่หนึ่งครั้งเพื่ออนุญาตให้เบราว์เซอร์ต่อที่นั่น แล้วแสดงจำนวนแถว × คอลัมน์กับ 5 แถวแรก

  4. กด "บันทึกและใส่ลงตาราง" แล้วเลือกว่าจะใส่ทั้งตารางหรือค่าเดียว ค่าจะอัปเดตเองตามรอบที่ตั้งไว้

เปิดแอป

สิ่งที่ต้องขอ IT

ถ้ากดทดสอบแล้วต่อไม่ติด แอปจะมีปุ่ม "คัดลอกไปส่ง IT" ให้ ข้อความนั้นขอสามอย่างนี้:

  • CORS: API ตอบ Access-Control-Allow-Origin เป็นที่อยู่ของเว็บนี้ และอนุญาต header ที่ใช้ (Access-Control-Allow-Headers) รวมถึงคำขอ OPTIONS ที่เบราว์เซอร์ส่งไปถามก่อน
  • https: เว็บนี้เป็น https เบราว์เซอร์จึงไม่ยอมให้เรียก API แบบ http (ยกเว้น API ที่รันบนเครื่องตัวเอง localhost)
  • เครือข่ายภายใน: API ที่อยู่ใน IP ภายใน บน Chrome/Edge อาจต้องตอบ Access-Control-Allow-Private-Network: true หรือผู้ใช้ต้องกดอนุญาตให้เว็บเข้าถึงเครือข่ายภายในเมื่อเบราว์เซอร์ถาม

ต่อฐานข้อมูล หรือให้เซิร์ฟเวอร์ดึงแทน (รันบนเซิร์ฟเวอร์ของคุณ)

เบราว์เซอร์ต่อ PostgreSQL หรือ MySQL ตรง ๆ ไม่ได้ทางเทคนิค ทางที่ง่ายที่สุดคือต่อผ่าน API ของบริษัทหรือ ERP ด้วยวิธีด้านบน ถ้าต้องการให้เซิร์ฟเวอร์เป็นคนดึงแทน (เช่นต่อฐานข้อมูลตรง หรือซ่อน URL จากคนใช้งาน) ให้รันแอปบนเซิร์ฟเวอร์ของคุณตามชุดเริ่มต้นด้านล่าง

เซิร์ฟเวอร์ต่ออะไรได้บ้าง

สี่ชนิด ทุกชนิดคนใช้งานเห็นเหมือนกันหมด คือเป็นตารางที่อัปเดตเองตามรอบที่ตั้งไว้

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

ชุดเริ่มต้น

สี่ขั้น ทำตามลำดับ คำสั่งทุกบล็อกกดคัดลอกได้

  1. เอาโค้ดมาและติดตั้ง

    ต้องมี Node.js 22.12 ขึ้นไป หรือ 24

    คำสั่ง
    git clone https://github.com/SuruchBoss/ExcelToGo.git
    cd ExcelToGo
    npm install
    cp .env.example .env.local

  2. ตั้งค่าใน .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

  3. รันบนเซิร์ฟเวอร์ที่เขียนไฟล์ได้

    แหล่งข้อมูลที่ตั้งไว้ถูกเก็บในไฟล์ data/sources.json บนเซิร์ฟเวอร์ จึงต้องรันบนเครื่องที่มีดิสก์เขียนได้และไม่หายเมื่อรีสตาร์ต เช่น VPS, Docker ที่ผูก volume ไว้ หรือเครื่องในบริษัท

    คำสั่ง
    npm run build
    npm run start

    Vercel ใช้กับฟีเจอร์นี้ไม่ได้ เพราะดิสก์บน Vercel อ่านได้อย่างเดียว บันทึกแหล่งข้อมูลไม่ลง

  4. เชื่อมต่อในแอป

    เปิด /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=

อ่านต่อ