
QR Room View คือระบบสำหรับคอนโด/ห้องเช่าส่วนตัว: แปะ QR ไว้หน้าห้อง คนเช่าสแกนแล้วเจอหน้าห้องนั้นทันที — รูป gallery เลื่อนดูได้, ราคา/เดือน, ป้ายว่าง/ไม่ว่าง, จุดเด่นของห้อง, เฟอร์นิเจอร์ที่ให้มา, ส่วนกลางของตึก, เงื่อนไขการเช่า, ปุ่มกด LINE กับโทรหาเจ้าของโดยตรง มีหน้ารวมทุกห้องแบบ marketplace ส่วนตัว และหน้าพิมพ์ QR ทุกห้องในหน้าเดียวมาให้ด้วย
จุดที่ทำให้โพสต์นี้ต่างจากโพสต์แจกโค้ดตัวอื่น ๆ: ไม่ต้องแตะ terminal เลยสักครั้ง ทุกอย่างจัดการผ่าน Google Sheet เดียว แก้ราคา เปลี่ยนสถานะห้อง แก้รายละเอียด คือการแก้ cell ธรรมดา ส่วนรูปห้องก็เก็บใน Google Drive โดยมีเมนูปุ่มเดียวที่สร้างโฟลเดอร์รูปให้เองอัตโนมัติ พร้อมตั้งค่าแชร์ให้ถูกต้องทันที
ทดลองใช้ของจริง: https://script.google.com/macros/s/AKfycby_96w2FNIZyoEBgRUUehOffYcMvJmvK1zVQixZcNhAKegfzAJ7QpzYSSqcXFDmDbhV/exec
โค้ดทั้งหมด: ติดมากับ Sheet เทมเพลตด้านล่างอยู่แล้ว (container-bound script) ส่วนใครอยากเก็บโค้ดไว้ใน git ของตัวเองแล้ว push ด้วย clasp อ่านซอร์สได้ที่ qr-room-template

ค่าใช้จ่าย: ศูนย์บาท ทั้งระบบวิ่งอยู่บน Google Apps Script + Sheets + Drive ซึ่งฟรีสำหรับปริมาณการใช้งานระดับคอนโดส่วนตัว
สิ่งที่ระบบนี้ไม่มี (ตั้งใจตัดออก): ระบบจอง/มัดจำ, หน้า login, อัปโหลดรูปในแอปแยกต่างหาก, ค้นหา/ฟิลเตอร์, รองรับหลายเจ้าของ — ถ้าต้องการฟีเจอร์พวกนี้ นี่ไม่ใช่ระบบสำหรับคุณ
§01ต้องมีอะไรก่อนเริ่ม
แค่ บัญชี Google ธรรมดา (ฟรี) เท่านั้น — ไม่ต้องลง Node.js ไม่ต้องรู้จัก terminal ไม่ต้องมีพื้นฐานเขียนโค้ดเลย
§02ขั้นตอนที่ 1: Copy Sheet ต้นแบบ
เปิดลิงก์นี้ → https://docs.google.com/spreadsheets/d/1apmY6EyN4ljq9SarRkZfyYVS3S6C1gD3fH1mAPwpMug/copy
Google จะถามว่าจะสำเนาไฟล์นี้ไหม — กด "สร้างสำเนา" (Make a copy) จะได้ Google Sheet ของคุณเองทันที ชื่อ "Copy of QR Room View..." (เปลี่ยนชื่อได้ตามใจ) โดย Sheet ที่ได้จะมีแท็บ rooms พร้อมข้อมูลห้องตัวอย่าง 2 ห้องให้ดูเป็นตัวอย่างอยู่แล้ว
โค้ดทั้งหมดของระบบ "ติดมากับ Sheet" อยู่แล้ว พอกด Make a copy โค้ดจะสำเนามาด้วยอัตโนมัติ ไม่ต้องไปโหลดโค้ดจากที่ไหนแยกต่างหาก
§03ขั้นตอนที่ 2: เปิดใช้งานระบบ (ทำครั้งเดียว)
ใน Sheet ของคุณ ไปที่เมนู Extensions → Apps Script จะเปิดหน้าต่างแก้โค้ด (ไม่ต้องแตะโค้ดอะไรเลย แค่ deploy)
กด Deploy → New deployment → เลือกประเภท Web app → ตั้งค่า:
- Execute as: Me
- Who has access: Anyone
กด Deploy ระบบจะขออนุมัติสิทธิ์ครั้งแรก (เพราะเป็นสำเนาของคุณเอง ต้องอนุญาตให้รันในนามคุณ) — กด Advanced → Go to project (unsafe) แล้วกด Allow ได้เลย ปลอดภัย เพราะเป็นสคริปต์ของคุณเองที่คุณเพิ่งสำเนามา ไม่ใช่ของคนแปลกหน้า
กด Deploy จะได้ URL หน้าตาประมาณ https://script.google.com/macros/s/AKfycb.../exec — นี่คือ URL จริงของระบบคุณ เก็บไว้ให้ดี เปิดดูได้เลย จะเห็นห้องตัวอย่าง 2 ห้องที่มากับ Sheet
§04ขั้นตอนที่ 3: กรอกข้อมูลห้องของคุณ
กลับไปที่ Sheet → แท็บ rooms แก้ไข/เพิ่มแถวห้องของคุณเอง:
| คอลัมน์ | ความหมาย | ตัวอย่าง |
|---|---|---|
room_id | รหัสห้อง ไม่ซ้ำกัน ใช้ในลิงก์ | 101 |
title | ชื่อห้องที่จะแสดง | ห้อง 101 — Studio ชั้น 1 |
price | ราคา/เดือน (ใส่ตัวเลขล้วน) | 6500 |
status | พิมพ์คำว่า ว่าง เป๊ะๆ ถ้าห้องว่าง อย่างอื่นถือว่าไม่ว่าง | ว่าง |
size_sqm | ขนาดห้อง (ตร.ม.) | 28 |
floor | ชั้น | 1 |
description | รายละเอียดสั้นๆ (ขึ้นบรรทัดใหม่ในเซลล์ได้) | เฟอร์ครบ แอร์ เครื่องทำน้ำอุ่น |
highlights | จุดเด่น บรรทัดละ 1 ข้อ | ใกล้ BTS/MRT บางหว้า 500 ม. |
furniture | เฟอร์นิเจอร์/เครื่องใช้ไฟฟ้าที่ให้มา บรรทัดละ 1 ข้อ | ทีวี / ตู้เย็น |
amenities | ส่วนกลางของตึก บรรทัดละ 1 ข้อ | สระว่ายน้ำ / Lawson |
conditions | เงื่อนไขการเช่า บรรทัดละ 1 ข้อ | สัญญา 1 ปี / ประกัน 2 เดือน + ล่วงหน้า 1 เดือน |
available_from | วันที่เข้าอยู่ได้ (พิมพ์เป็นข้อความอิสระ) | 9 ก.พ. 2569 |
price_note | ข้อความเล็กๆ ต่อท้ายราคา | รวมค่าส่วนกลาง + ที่จอดรถ 1 คัน |
line_id | LINE ID (เว้นว่างได้ถ้าไม่ใช้ LINE — ปุ่ม LINE จะไม่ขึ้นเอง) | cqsol |
phone | เบอร์โทร | 0812345678 |
drive_folder_id | เติมเองด้วยเมนูในขั้นตอนถัดไป — ไม่ต้องกรอกมือ | (ปล่อยว่าง) |
คอลัมน์ highlights / furniture / amenities / conditions / available_from / price_note ไม่บังคับใส่ทุกช่อง — เว้นว่างช่องไหน หัวข้อนั้นจะไม่ขึ้นในหน้าห้องเลย คอลัมน์ room_id กับ phone ตั้งเป็น Plain text ไว้ให้แล้วในเทมเพลต เบอร์โทรจะไม่โดนตัดเลข 0 ข้างหน้าทิ้งเหมือน Sheet ทั่วไป

§05ขั้นตอนที่ 4: เพิ่มรูปห้อง (ปุ่มเดียว ไม่ต้องยุ่งกับ Drive เอง)
คลิกเลือกแถวห้องที่ต้องการ (คลิกที่ cell ไหนก็ได้ในแถวนั้น) แล้วไปที่เมนู "📷 QR Room View" → "สร้างโฟลเดอร์รูปให้ห้องที่เลือก"
ระบบจะสร้างโฟลเดอร์ Drive ให้ห้องนั้นอัตโนมัติ ตั้งค่าแชร์เป็น "Anyone with the link" ให้เอง เติม drive_folder_id ลงในแถวนั้นให้เอง แล้วเด้งลิงก์โฟลเดอร์ขึ้นมาให้คลิกเข้าไปได้เลย
เปิดลิงก์ที่เด้งมา แล้วลากรูปห้องใส่โฟลเดอร์นั้น ตั้งชื่อไฟล์ให้เรียงลำดับ เช่น 01-cover.jpg, 02-bedroom.jpg — รูปแรกตามลำดับตัวอักษรจะกลายเป็นรูปปก ทำซ้ำทีละแถวสำหรับทุกห้อง
ระบบอาจขออนุมัติสิทธิ์อีกครั้ง (สำหรับสิทธิ์เข้าถึง Drive) — กด Allow ได้เลย เป็นสิทธิ์ที่จำเป็นสำหรับสร้าง/แชร์โฟลเดอร์ให้คุณ
ตรวจสอบก่อนพิมพ์ QR: เปิด {URL}/dev?page=debug (เอา URL จากขั้นตอนที่ 2 ต่อด้วย /dev?page=debug) → ต้องเห็น JSON ของทุกห้อง และ photoUrls ของห้องที่เพิ่งใส่รูปต้องไม่ว่างเปล่า
§06ขั้นตอนที่ 5: พิมพ์ QR แปะหน้าห้อง
เปิด {URL}/exec?page=qr → กดปุ่ม 🖨️ พิมพ์ → ปริ้นออกมา ตัดเป็นการ์ดแยกห้อง แปะไว้หน้าประตูห้องแต่ละห้อง เอามือถือสแกนดูสักใบ ถ้าเปิดหน้าห้องถูกต้อง — เสร็จแล้ว ระบบพร้อมใช้งานจริง

§07ใช้งานประจำวัน
- ห้องว่าง/ไม่ว่าง เปลี่ยนราคา แก้รายละเอียด → แก้ cell ใน Sheet ได้เลย เว็บอัปเดตทันทีที่ refresh
- เพิ่มห้องใหม่ → เพิ่มแถวใน Sheet → เลือกแถวนั้น → ใช้เมนู "📷 QR Room View" สร้างโฟลเดอร์รูป → ลากรูปใส่ → พิมพ์ QR ห้องนั้นเพิ่ม
- เพิ่ม/เปลี่ยนรูป → เปิดโฟลเดอร์ Drive ของห้องนั้นตรงๆ (จากลิงก์ที่เมนูเคยแจ้งไว้ หรือเข้า Drive แล้วหาโฟลเดอร์ชื่อห้องนั้น) โยนรูปเพิ่ม/ลบได้เลย ไม่ต้องกลับมาที่เมนูอีก
§08ถ้าพัง เช็คตามนี้ก่อน
| อาการ | สาเหตุที่เป็นไปได้ |
|---|---|
| รูปเสีย/ขึ้น 403 | ลองสร้างโฟลเดอร์รูปใหม่ผ่านเมนูอีกครั้ง (ถ้าเผลอไปเปลี่ยน sharing ของโฟลเดอร์เองด้วยมือ) |
| กดเมนู "📷 QR Room View" ไม่เจอ | ต้อง reload หน้า Sheet ก่อน 1 ครั้งหลัง Make a copy เมนูถึงจะขึ้น |
เปิด /exec หรือ /dev แล้วเจอหน้า login Google | ตอน deploy ไม่ได้ตั้ง "Who has access" เป็น Anyone — กลับไปที่ Deploy → Manage deployments แก้ได้ |
| กดเมนูสร้างโฟลเดอร์แล้ว error "เลือกแถวห้องก่อน" | ต้องคลิกที่ cell ในแถวห้องจริงๆ ก่อน (แถวที่ 2 เป็นต้นไป ไม่ใช่แถวหัวตาราง) |
| กดลิงก์ในหน้าเว็บแล้วไม่มีอะไรเกิดขึ้น | รีเฟรชหน้าเว็บอีกครั้ง ถ้ายังไม่หายให้ลองเปิดจาก URL ใหม่ (ไม่ใช่ browser tab เดิมที่ค้างนาน) |
§09ค่าใช้จ่ายและการดูแลระยะยาว
ศูนย์บาท ตลอดไป (สำหรับปริมาณการใช้งานระดับคอนโดส่วนตัว) — Google Apps Script, Sheets, Drive ฟรีทั้งหมด จุดเดียวที่ควรรู้ไว้: endpoint รูปของ Drive (thumbnail?id=...) เป็น endpoint ที่ไม่ official ถ้าวันไหนรูปหายทั้งระบบ ให้เช็คจุดนี้ก่อน (Google เคยเปลี่ยนพฤติกรรม endpoint แบบนี้มาแล้วในอดีต)
เนื่องจากสำเนาของคุณแยกออกจากต้นฉบับตั้งแต่วัน Make a copy โค้ดจะไม่อัปเดตให้อัตโนมัติ ถ้าอยากได้ฟีเจอร์ใหม่ ให้กลับมาดูโพสต์นี้อีกครั้ง — ถ้ามีอัปเดตสำคัญจะประกาศไว้ด้านบน
§10อยากสร้างแบบเริ่มจากศูนย์วิธีการที่ผมทำ
สามารถอ่านรายละเอียดเพิ่มใน Repo นี้ได้ https://github.com/paepuripat/qr-room-view
💬 ติดปัญหาระหว่าง setup คอมเมนต์ไว้ที่ Facebook Group ได้เลยครับ
Engineer, writer, occasional GPU-melter. Writes every Sunday about applied AI — agents, evals, and whatever broke that week.
If you got something out of this, share it with someone who's trying to ship their first agent.
