สร้าง Mini Pos ขายสินค้าด้วยตนเอง Sheet + Appsheet

 ออกแบบตาราง จำนวน 3 ตาราง ใน Sheet 

Product 

ProductIDProductNamePriceStockQtyCategory

Sales

SalesIDSalesDateTotalAmountCheckedOut?

Cart

CartIDSalesIDProductIDQuantityPriceAmountCheckedOut?

ขั้นต่อมา มาที่โปรแกรม Appsheet สร้างแอพใหม่ กำหนดชื่อตามถนัด ตัวอย่างใช้ Mini Pos v1
นำเข้าฐานข้อมุลตาราง ให้ครบ 3 ตาราง 
ขั้นการ อ้างอิง การใส่ค่าเริ่มต้น การกำหนด key หลัก และใส่ สูตร ต่างๆ ตามลำดับ 



ขั้นการสร้าง Action เพื่อให้แอพขายสินค้าทำงาน ตามที่เราต้องการ ดังนี้ 

✅ 1. สร้าง Action: “Checkout Items”

👉 ไปที่ Table: Cart

  • ชื่อ Action: Mark as Checked Out

  • For a record of this table: Cart

  • Do this: Data: set the values of some columns in this row

  • Set Column: CheckedOut? → Value: TRUE

✅ ตอนนี้คือ Action ที่ใช้เปลี่ยนสถานะตะกร้าให้เป็น CheckedOut


สร้าง Action ใหม่ใน Table Sales

  1. ไปที่ Behavior > Actions

  2. คลิก + New Action

  3. ตั้งค่าดังนี้:

รายการค่า
Action NameMark Sale as Checked Out
For a record of this tableSales
Do thisSet the values of some columns in this row
Set these columns
CheckedOut? = TRUE


✅ ขั้นตอนเพิ่ม Action กลาง (Run action on a set of rows)

🔹 Step A: สร้าง Action ใน Table Sales

  1. ไปที่ Behavior > Actions

  2. กด New Action

  3. ตั้งค่าแบบนี้:

รายการ ค่า
Name Run Checkout on Cart
For a record of this table Sales
Do this Execute an action on a set of rows
Referenced Table Cart
Referenced Rows ใส่สูตรนี้:
SELECT(Cart[CartID], AND([SalesID] = [_THISROW].[SalesID], [CheckedOut?] = FALSE))

| Referenced Action | Mark as Checked Out (จาก Table Cart) |


สร้าง Grouped Action ในตาราง Sales

✅ ชื่อ: Checkout Sale

  1. ไปที่ Behavior > Actions

  2. เลือก Table: Sales

  3. กดปุ่ม New Action

  4. ตั้งค่า:

    • Name: Checkout Sale

    • For a record of this table: Sales

    • Do this: Group of actions

    • กดปุ่ม Add ด้านล่าง

เพิ่ม Action แบบ "Execute an action on a set of rows"

  • เลือก:

    • Action: Execute an action on a set of rows

    • Referenced Table: Cart

    • Referenced Rows: ใส่สูตรนี้:

SELECT(Cart[CartID], AND([SalesID] = [_THISROW].[SalesID], [CheckedOut?] = FALSE))

    • Referenced Action: Mark as Checked Out

✅ ตอนนี้ Action นี้จะเปลี่ยนสถานะของสินค้าทั้งหมดที่ยังไม่ Checkout ในบิลนี้ให้เป็น TRUE

🔹 Step 3: แสดงปุ่ม Checkout Sale บนหน้าจอ

  1. ไปที่ UX > Views

  2. ไปที่ View ที่ใช้แสดงรายละเอียด Sales เช่น Sales_Detail หรือ Sales_Form

  3. เลื่อนลงไปที่ Behavior > Actions

  4. ตรง "Event Actions" หรือ "Display prominently" → เลือก Action: Checkout Sale

  5. ตั้ง Icon เช่น 🛒 หรือ ✅ และ Label ว่า "Checkout" ก็ได้


 สร้างและอธิบาย ขั้นตอนลูกค้าเลือกสินค้า และส่งไปในตะกร้าสินค้า เพื่อcheckOut


🔄 ขั้นตอนการทำงานของระบบ

💡 แนวคิด:

  1. ผู้ใช้เลือกสินค้า (จาก product)

  2. ใส่จำนวน → ระบบคำนวณราคารวม

  3. กด “เพิ่มลงตะกร้า” → ข้อมูลจะไปอยู่ใน cart

  4. เมื่อพร้อมแล้ว → กด Checkout เพื่อสร้างใบเสร็จ (บิลขาย) ใน sales


🧱 ตารางที่ใช้

🔹 product

  • ข้อมูลสินค้า เช่น รหัส, ชื่อ, ราคา, สต็อก

🔹 cart

  • ตะกร้าสินค้า (ข้อมูลสินค้าที่เลือก)

  • มีฟิลด์สำคัญ:

    • CartID

    • SalesID (Ref ไปที่ sales)

    • ProductID (Ref ไปที่ product)

    • Quantity

    • Price (ดึงจาก product)

    • Amount (คำนวณ)

    • CheckedOut? (TRUE/FALSE)

🔹 sales

  • ใบบิลขายสินค้า

🛠️ ขั้นตอนการสร้างระบบเลือกสินค้า → ใส่ตะกร้า


🔸 1. สร้าง Action: “Add to Cart”

ไปที่ Table: product

  1. Menu: Behavior > Actions

  2. สร้าง Action ใหม่

Field Value
Action name AddToCart
For a record of this table product
Do this Data: add a new row to another table using values from this row
Target table cart
Set these columns ตามนี้ด้านล่าง
SalesID      → LINKTOFORM("cart_Form", "SalesID", ANY(SELECT(sales[SalesID], [CheckedOut?]=FALSE)))
ProductID    → [ProductID]
Quantity     → 1   ← ใส่ค่าเริ่มต้นหรือเปิดให้ผู้ใช้กรอกทีหลัง
Price        → [Price]
Amount       → [Price] * 1
CheckedOut?  → FALSE
✅ คุณสามารถให้ผู้ใช้กรอก Quantity ผ่านฟอร์มก็ได้ ถ้าใช้ LINKTOFORM() แบบเปิดฟอร์มแทรกจำนวน

🔸 2. สร้างฟอร์มสำหรับเพิ่มรายการในตะกร้า

ใน Table: cart

  • ไปที่ UX > Views

  • สร้าง View แบบ Form

  • Table: cart

  • ตั้งชื่อว่า: cart_Form

  • Show if: FALSE (ซ่อนไว้ เพราะเรียกผ่าน Action)

🔸 3. เพิ่ม Action ปุ่ม "Add to Cart" บนหน้าสินค้า

  • ใน Table product ให้แสดง Action “AddToCart”

  • ใน UX > View → Table View หรือ Deck View ของ product

  • Section: “Actions” → ใส่ Action “AddToCart” เป็นปุ่มด้านขวา


🔸 4. เมื่อกดปุ่ม → ฟอร์มเพิ่มรายการเปิดขึ้น

ผู้ใช้จะใส่จำนวนสินค้า แล้วกด “Save”
→ รายการจะถูกเก็บใน cart ทันที


🔸 5. สร้าง View แสดงตะกร้าสินค้า (Cart View)

  • Table: cart

  • Slice: แสดงเฉพาะที่ยัง CheckedOut? = FALSE

  • UX > View type: Table / Deck

  • ตั้งชื่อว่า: My Cart

Optional:

  • Grouped by: SalesID

  • Columns: ProductName, Quantity, Amount


🔸 6. สร้างปุ่ม Checkout Sale

ให้ดูรายละเอียดที่เราทำไว้ก่อนหน้า:

  • Action กลุ่ม: Mark as Checked Out, Update Sales Amount

  • หรือใช้ Bot ก็ได้


✅ สรุป Flow การใช้งาน

ขั้นตอนรายละเอียด
1. ผู้ใช้เปิดหน้า "Product"เลือกสินค้า กดปุ่ม "Add to Cart"
2. ฟอร์มเปิดให้ใส่จำนวนบันทึกแล้วส่งข้อมูลไป cart
3. ตะกร้าเก็บข้อมูลสินค้าเชื่อมกับ salesID เดียวกัน
4. ผู้ใช้เปิด “My Cart”ดูสินค้าที่จะซื้อ
5. กดปุ่ม “Checkout Sale”สรุปรายการ → อัปเดตสถานะและยอดขาย



การสร้างลิงค์ความสัมพันธ์ระหว่างตาราง 

🧩 1. ตาราง cart
คอลัมน์ ประเภท การตั้งค่าเพิ่มเติม
CartID Text (Key) เช่น [SalesID] & "-" & [ProductID]
SalesID Ref → sales[SalesID] ไม่เปิด Is a part of?
ProductID Ref → product[ProductID]
Quantity Number
Price Number App formula: [ProductID].[Price]
Amount Number App formula: [Quantity] * [Price]
CheckedOut? Yes/No Default = FALSE


ขั้นตอนแบบละเอียด สำหรับการสร้าง ระบบเพิ่มสินค้าเข้าตะกร้า (Cart) ด้วย Action, LINKTOFORM, และ UX Form แบบอัตโนมัติ เพื่อใช้ในระบบขายสินค้าผ่าน AppSheet ✅

Table Name ใช้สำหรับ
product แสดงรายการสินค้า
sales เก็บข้อมูลบิล
cart เก็บสินค้าในแต่ละบิล (SalesID)

✅ 1. เตรียมฟอร์ม Cart

ใน ตาราง cart ให้สร้างฟอร์มแบบ UX ดังนี้

📍ไปที่เมนู UX > Views:

  • View name: Cart_Form

  • For this data: cart

  • View type: form

  • Position: off (หรืออื่นๆ แล้วแต่ความเหมาะสม)

  • Behavior:

    • Auto save: ✅ On (ถ้าต้องการให้บันทึกทันทีเมื่อเลือกสินค้า)



✅ 2. สร้าง Action บนตาราง product เพื่อเพิ่มสินค้าเข้า Cart

📍ไปที่ Behavior > Actions > กด “+ New Action”


ค่า รายละเอียด
For a record of this table: product
Action name: Add to Cart
Do this: App: go to another view within this app
Target: ใช้สูตร LINKTOFORM() ด้านล่าง 👇

LINKTOFORM(
  "Cart_Form",
  "SalesID", ANY(SELECT(sales[SalesID], [CheckedOut?] = FALSE)),
  "ProductID", [ProductID],
  "Quantity", 1
)

✅ 3. แสดงปุ่ม "Add to Cart" บนตารางสินค้า

📍กลับมาที่ UX > Views:

  • View name: Product_List

  • For this data: product

  • View type: deck หรือ table

จากนั้น:

  • เปิด "Actions" ด้านล่าง

  • Show overlay action: ✅ เลือก Add to Cart (ที่สร้างในขั้นตอน 2)


✅ 4. ตรวจสอบผลลัพธ์

ลองเปิดแอป แล้วดูที่หน้ารายการสินค้า (product)
คุณจะเห็นปุ่ม "Add to Cart" → เมื่อกดจะเปิด Cart_Form พร้อมข้อมูล:

  • SalesID (ที่ยังไม่ปิดบิล)

  • ProductID (สินค้าที่กด)

  • Quantity = 1

เมื่อกด Save → บันทึกเข้า cart ทันที ✅



"MiniPOS" – แอปขายของขนาดเล็ก ใช้ได้จริง ไม่ต้องเขียนโค้ด

🎯 จุดประสงค์:

  • บันทึกการขาย (ขายสินค้า รับเงิน ดูยอดขายรายวัน)

  • จัดการสินค้า (เพิ่ม/ลบ/ปรับราคา)

  • สรุปยอดขาย รายงานกำไร

  • ใช้งานง่ายผ่านมือถือ/แท็บเล็ต

  • ไม่มีค่าใช้จ่าย (ใช้ Google Sheet + AppSheet)

ProductID ProductName Category Price Stock Image
P001 กาแฟลาเต้ เครื่องดื่ม 45 30 (ลิงก์รูป)

SaleID Date ProductID Qty Total PaymentMethod
S001 2025-05-27 P001 2 90 เงินสด

UserID Name Role
U001 พิมพ์ เจ้าของร้าน

Date TotalSales TotalItems TotalIncome
2025-05-27 15 34 1,530

📱 หน้าจอใน AppSheet ที่ควรมี:

  1. หน้า "ขายสินค้า" (Sell)

    • เลือกสินค้า → ใส่จำนวน → คำนวณยอดรวม → กดบันทึก

    • เลือกวิธีชำระเงิน: เงินสด / โอน / พร้อมเพย์

  2. 📦 หน้า "สินค้า" (Products)

    • ดูรายการสินค้า

    • เพิ่มสินค้าใหม่ / แก้ไขราคา / ดูสต๊อกคงเหลือ

  3. 📊 หน้า "รายงานยอดขาย" (Dashboard)

    • กราฟยอดขายรายวัน

    • รายงานสินค้าไหนขายดี

    • ยอดรวมรายสัปดาห์ / เดือน

  4. 👥 (เสริม) หน้า "ผู้ใช้งาน" – กำหนดสิทธิ์หรือให้หลายคนใช้ร่วมกัน


🧠 ไอเดียเสริมสำหรับตอนต่อไปใน YouTube:

  • EP2: “วิธีเพิ่มสินค้า + ตั้งราคาใน Google Sheet สำหรับ POS”

  • EP3: “สร้างหน้าบันทึกการขายด้วย AppSheet ง่าย ๆ”

  • EP4: “สร้างรายงานยอดขายอัตโนมัติ ดูได้ทุกวัน”

  • EP5: “แปลง Google Sheet เป็น POS ใช้บนมือถือ”



แจกโปรแกรมฟรีช่วยสร้างแอปง่าย ๆ โดยไม่ต้องเขียนโค้ด (No-Code Tools 2025)

 ในยุคนี้ใคร ๆ ก็สามารถสร้างแอปของตัวเองได้ง่าย ๆ แม้ไม่มีพื้นฐานการเขียนโปรแกรมเลย เพราะเครื่องมือ No-Code Platforms ได้ถูกพัฒนาให้ใช้งานง่าย สร้างแอปพลิเคชันได้ภายในไม่กี่ชั่วโมง เหมาะทั้งกับผู้ประกอบการ นักเรียน นักการตลาด หรือแม้แต่นักพัฒนาแอปหน้าใหม่ที่ต้องการเริ่มต้นโดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว

วันนี้เรารวมโปรแกรมและแพลตฟอร์ม No-Code สุดเจ๋ง ประจำปี 2025 ที่คุณสามารถใช้งานได้ฟรี หรือมีเวอร์ชันฟรีให้เริ่มต้น สร้างได้ทั้งแอปบนมือถือ เว็บไซต์ ไปจนถึงระบบฐานข้อมูลหลังบ้าน!


🔧 1. AppSheet – แอปจาก Google สร้างง่ายจาก Google Sheet

  • ✅ ประเภท: แอปมือถือ/เว็บ

  • 💡 เหมาะสำหรับ: คนทำงานเอกสาร, สร้างแอปจากข้อมูล Excel/Google Sheet

  • 🌐 เว็บไซต์: https://www.appsheet.com

จุดเด่น

  • ดึงข้อมูลจาก Google Sheets มาใช้เป็นฐานข้อมูลแอป

  • สร้างแอปได้ทันทีแบบ responsive

  • มีฟีเจอร์ logic เช่นการแจ้งเตือน, คำนวณอัตโนมัติ

  • ใช้ฟรีหากใช้งานส่วนตัวหรือเพื่อทดลอง

ตัวอย่างการใช้งาน

  • แอปลงเวลางาน

  • แอปสั่งซื้อสินค้า

  • แอปเช็กยอดสต๊อก


⚡ 2. Glide – สร้างแอปมือถือสุดสวยจาก Google Sheet ภายใน 5 นาที

  • ✅ ประเภท: แอปมือถือ/เว็บ

  • 💡 เหมาะสำหรับ: คนทั่วไป, ธุรกิจขนาดเล็ก

  • 🌐 เว็บไซต์: https://www.glideapps.com

จุดเด่น

  • สร้างแอปโดยใช้ข้อมูลจาก Google Sheets

  • UI สวยมาก ลากวางได้

  • มีเทมเพลตสำเร็จรูปให้เลือก

  • ใช้ฟรีในแบบ Public App (มีลายน้ำ Glide)

ตัวอย่าง

  • แอปรายชื่อสมาชิก

  • แอปฟอร์มลงทะเบียน

  • แอปร้านค้าแบบง่าย ๆ


🌐 3. Bubble – สร้างเว็บแอประดับมืออาชีพแบบไม่ต้องเขียนโค้ด

  • ✅ ประเภท: Web App

  • 💡 เหมาะสำหรับ: Startup, MVP, SaaS

  • 🌐 เว็บไซต์: https://bubble.io

จุดเด่น

  • สร้างระบบ login, ฟอร์ม, ระบบจอง, ฐานข้อมูลได้ครบ

  • มี workflow และ logic ซับซ้อนได้ (เหมือนเขียนโค้ด แต่ใช้ GUI)

  • เหมาะสำหรับทำเว็บระบบ เช่น ระบบสมาชิก ระบบจองตั๋ว


📱 4. Thunkable – สร้างแอปมือถือ iOS/Android ลากวางได้

  • ✅ ประเภท: แอปมือถือ (native)

  • 💡 เหมาะสำหรับ: นักเรียน, ผู้เริ่มต้นเขียนแอป

  • 🌐 เว็บไซต์: https://thunkable.com

จุดเด่น

  • ลากบล็อก logic ได้คล้าย Scratch

  • สร้างแอปแล้ว export ไปใช้กับ iOS/Android

  • มีระบบกล้อง, แผนที่, การแจ้งเตือนครบ

  • มีเวอร์ชันฟรีใช้งานได้ดี


🧩 5. Adalo – สร้างแอปและเชื่อมต่อฐานข้อมูลได้จริง

  • ✅ ประเภท: แอปมือถือ

  • 💡 เหมาะสำหรับ: ธุรกิจ, ผู้พัฒนา MVP

  • 🌐 เว็บไซต์: https://www.adalo.com

จุดเด่น

  • สร้างระบบล็อกอิน, ฐานข้อมูล, ร้านค้าได้ในไม่กี่คลิก

  • UI ลากวาง

  • ใช้เวอร์ชันฟรีสำหรับแอปทดลองใช้งาน (มีลายน้ำ)


📊 ตารางเปรียบเทียบเครื่องมือ No-Code 2025

เครื่องมือประเภทแอปความง่ายในการใช้งานรองรับภาษาไทยแพลตฟอร์มฟรี
AppSheetWeb/Mobile⭐⭐⭐⭐
GlideWeb/Mobile⭐⭐⭐⭐⭐
BubbleWeb App⭐⭐⭐
ThunkableMobile⭐⭐⭐⭐
AdaloMobile⭐⭐⭐⭐

✨ สรุป: มือใหม่ก็เริ่มต้นสร้างแอปได้!

ไม่ว่าจะเป็นนักเรียน ครู เจ้าของธุรกิจ หรือใครก็ตามที่มีไอเดียอยู่ในหัว คุณสามารถสร้างแอปได้โดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว ขอเพียงคุณเริ่มต้นเรียนรู้จากแพลตฟอร์มเหล่านี้ แล้วทดลองใช้งานจริง คุณจะค้นพบว่า “การทำแอปไม่ยากอย่างที่คิด”



เพิ่มเลขลำดับอัตโนมัติใน Google Sheet ไม่ต้องเสียเวลาใส่เอง!

1. รันลำดับเลขธรรมดาอัตโนมัติ

หากคุณต้องการให้เลขลำดับเรียงอัตโนมัติในคอลัมน์ (เช่น 1, 2, 3, 4, …)

👉 วิธีที่ 1: ลากเติมเอง

  1. พิมพ์เลข 1 ที่เซลล์ A2

  2. พิมพ์เลข 2 ที่ A3

  3. ลากจากมุมล่างขวาของ A2:A3 ลงมา (Google Sheets จะเติมเลขให้โดยอัตโนมัติ)

👉 วิธีที่ 2: ใช้ฟังก์ชัน ROW()

=ROW() - 1

  • ใช้ในเซลล์ A2 หากแถวที่ 1 เป็นหัวตาราง

  • ROW() จะคืนค่าหมายเลขแถว เช่น แถวที่ 2 จะคืนค่า 2

  • ลบ 1 เพื่อให้เริ่มที่หมายเลข 1

  • 👉 วิธีที่ 3: ใช้ SEQUENCE() (แนะนำ)

  • =SEQUENCE(10,1,1,1)

    • สร้างลำดับเลข 1 ถึง 10

    • รูปแบบ: SEQUENCE(จำนวนแถว, จำนวนคอลัมน์, ค่าเริ่มต้น, ระยะห่าง)

    • เช่น: =SEQUENCE(100,1,1,1) จะได้ 1–100 ในคอลัมน์เดียว


    2. รันหมายเลขเฉพาะแถวที่มีข้อมูล

    สมมติว่าคุณมีข้อมูลอยู่ในคอลัมน์ B และอยากให้คอลัมน์ A เป็นลำดับเฉพาะแถวที่ B ไม่ว่าง

    สูตร:

  • =IF(B2<>"", ROW()-1, "")
  • หรือแบบยืดหยุ่นกว่านี้:
  • =IF(B2<>"", COUNTA($B$2:B2), "")
    • สูตรนี้จะนับเฉพาะแถวที่มีข้อมูลในคอลัมน์ B และรันลำดับให้เท่านั้น


    3. อัปเดตอัตโนมัติเมื่อเพิ่มข้อมูล

    ถ้าอยากให้ระบบเพิ่มหมายเลขลำดับให้ทุกครั้งที่มีการเพิ่มแถวใหม่ (โดยอัตโนมัติ) ให้ใช้ ARRAYFORMULA:

  • =ARRAYFORMULA(IF(B2:B<>"", ROW(B2:B)-1, ""))

  • หรือแบบไม่ขึ้นกับเลขแถว:
  • =ARRAYFORMULA(IF(LEN(B2:B), SEQUENCE(COUNTA(B2:B)), ""))


  • ทำแอพเชคชื่อใน 15 นาที ด้วย Appsheet ep2

     ตอนที่ 2 เราจะมาขยายความสามารถของแอพ ในการสร้างตารางเพิ่ม เพื่อเรียกดูข้อมูล การบันทึกเวลา เข้างานออกงาน ของแต่ละคน กันครับ 

    🔁 ถามตัวเองก่อนจะสร้าง Table ใหม่:

    คำถามถ้าคำตอบคือ "ใช่" → สร้าง Table ใหม่
    ต้องการคำนวณผลต่างของเวลา (IN - OUT)?
    ต้องสรุปผลรายวัน/รายเดือนของแต่ละพนักงาน?
    ต้องการดูค่าเฉลี่ยเวลาทำงานหรือสะสม?

    ตามเหตุผล เรามาสร้างตารางเพิ่มก่อน ตามคำแนะนำ ด้านล่าง 

    🔧 ขั้นตอนที่ 1: เตรียม Google Sheet

    1. ไปที่ไฟล์ Google Sheet ของคุณ

    2. เพิ่มแผ่นใหม่ ชื่อว่า DailyWorkSummary

    3. ใส่หัวตารางแบบนี้:

    SummaryIDEmployeeIDDateInTimeOutTimeWorkHours
    (Auto ID)E0012025-05-2508:00 AM05:00 PM9.0

    นำเข้าข้อมูลไปที่ Appsheet และกำหนดชนิดของคอลัมน์ ดังนี้

    🔧 ขั้นตอนที่ 2: ตั้งค่า Column ใน AppSheet

    1. ไปที่ Data > Columns > DailyWorkSummary

    2. ตรวจสอบและตั้งค่า:

      • SummaryID: Key (Auto)

      • EmployeeID: Type = Ref → Table = Employee

      • Date: Type = Date

      • InTime / OutTime: Type = DateTime

      • WorkHours: Type = Decimal (หรือ Duration ก็ได้)


    วิธี : ใช้สูตร Virtual Column คำนวณเวลาจาก TimeLogs

    🔧 วิธีเพิ่ม Virtual Column ใน DailyWorkSummary

    🧩 Virtual Column 1: In Time

    MIN(

      SELECT(

        TimeLogs[เวลา],

        AND(

          [EmployeeID] = [_THISROW].[EmployeeID],

          [ประเภท] = "เวลาเข้า",

          DATE([เวลา]) = [_THISROW].[Date]

        )

      )

    )

    สร้างอีกคอลัมน์จำลอง 

    🧩 Virtual Column 2: Out Time

    MAX(

      SELECT(

        TimeLogs[เวลา],

        AND(

          [EmployeeID] = [_THISROW].[EmployeeID],

          [ประเภท] = "เวลาออก",

          DATE([เวลา]) = [_THISROW].[Date]

        )

      )

    )



    🔧 ขั้นตอนที่ 3: สร้างกราฟสรุปจาก DailyWorkSummary

    1. ไปที่ UX > Views

    2. กด “New View”

    3. ตั้งชื่อ: กราฟเวลาทำงาน

    4. View type: Chart

    5. For table: DailyWorkSummary

    6. Chart type: Column หรือ Line

    7. Label: Date

    8. Series: WorkHours

    9. Group by: EmployeeID หรือ Name


    🎯 เสริม: เพิ่มใน Dashboard

    1. ไปที่ UX > Views

    2. New View → Type = Dashboard

    3. เพิ่ม View:

      • Table ของ DailyWorkSummary

      • Form (ถ้ามี)

      • Chart ที่สร้างไว้

    วิธีป้องกันการลงเวลาเข้างานซ้ำในแต่ละวัน

    ✅ สูตร Valid If (เช็คทั้ง "เวลาเข้า" และ "เวลาออก")

    IF(
      [ประเภท] = "เวลาเข้า",
      ISBLANK(
        FILTER(
          "TimeLogs",
          AND(
            ([EmployeeID] = [_THISROW].[EmployeeID]),
            ([วันที่] = [_THISROW].[วันที่]),
            ([ประเภท] = "เวลาเข้า")
          )
        )
      ),
      IF(
        [ประเภท] = "เวลาออก",
        AND(
          ISBLANK(
            FILTER(
              "TimeLogs",
              AND(
                ([EmployeeID] = [_THISROW].[EmployeeID]),
                ([วันที่] = [_THISROW].[วันที่]),
                ([ประเภท] = "เวลาออก")
              )
            )
          ),
          NOT(
            ISBLANK(
              FILTER(
                "TimeLogs",
                AND(
                  ([EmployeeID] = [_THISROW].[EmployeeID]),
                  ([วันที่] = [_THISROW].[วันที่]),
                  ([ประเภท] = "เวลาเข้า")
                )
              )
            )
          )
        ),
        TRUE
      )
    )



    "AppSheet ทำระบบเช็คชื่อใน 15 นาที"

     “อยากมีระบบเช็คชื่อโดยไม่ต้องเขียนโค้ด? วันนี้ผมจะพาคุณทำระบบเช็คชื่อใน 5 นาที ด้วย AppSheet ฟรี ใช้ได้จริง!”

    เป้าหมาย

    • พนักงานใช้มือถือในการ “เช็คชื่อเข้า” และ “เช็คชื่อออก”

    • ผู้บริหารดูรายงานเข้า-ออกงาน รายวัน/รายเดือน ได้จาก Google Sheet

    • ระบบใช้งานได้ใน 1 วัน ไม่ต้องตั้ง Server

    โครงสร้าง Google Sheets

    🔹 ชื่อชีต: Employees

    EmployeeIDชื่อ-สกุลตำแหน่งสถานะ
    E001สมชาย ใจดีธุรการทำงานอยู่
    E002สมหญิง รักงานการเงินลาออก


    🔹 ชื่อชีต: TimeLogs

    LogIDวันที่เวลาEmployeeIDประเภทหมายเหตุ
    12025-05-2408:02:15 AME001เข้า
    22025-05-2405:13:10 PME001ออกเลิกงานตามเวลา


    เมนูการใช้งานใน AppSheet

    👤 ผู้ใช้งาน (พนักงาน)

    เมนูฟังก์ชัน
    🔘 ลงชื่อเข้าบันทึกเวลาปัจจุบัน → ประเภท "เข้า" → ระบบบันทึกอัตโนมัติ
    🔘 ลงชื่อออกบันทึกเวลาปัจจุบัน → ประเภท "ออก" → เพิ่มหมายเหตุ (ถ้ามี)
    📄 ประวัติของฉันดูรายการเข้า-ออกย้อนหลัง (Filter ด้วย Email หรือ EmployeeID)

    🧑‍💼 ผู้ดูแลระบบ (HR/ผู้จัดการ)

    เมนูฟังก์ชัน
    📊 สรุปเวลาเข้าออกรายงานรวมต่อวัน/เดือน → แสดงว่าใครเข้า-ออกกี่โมง
    👥 รายชื่อพนักงานเพิ่ม/ลบ/แก้ไขข้อมูลพนักงาน
    📤 ส่งออกข้อมูลดึงข้อมูลจาก TimeLogs เป็น Excel หรือ PDF

    🎨 หน้า Form ตัวอย่างใน AppSheet

    • วันที่ → NOW() หรือ TODAY() (ซ่อน)

    • เวลา → NOW() (ซ่อน)

    • EmployeeID → จากระบบ Login หรือเลือกจาก Drop-down

    • ประเภท → Drop-down "เข้า / ออก"

    • หมายเหตุ → ช่องเสริม (เช่น “มาสาย”, “ออกไปประชุม”)


    📈 Dashboard ที่สร้างได้

    • กราฟ bar chart: จำนวนเข้า/ออกรายวัน

    • ตาราง pivot: แสดงการเข้า-ออกของพนักงานแต่ละคน

    • Heatmap: ใครมาทำงานวันไหนบ้าง (ปฏิทิน)

    🔹 CheckType (เลือกเข้า / ออก)

    • Type: Enum

    • Values: "เข้า", "ออก"

    • Allow other values: FALSE


    📱 การออกแบบ หน้าจอเช็คชื่อ

    ✅ View: “เช็คชื่อ”

    • Type: Form

    • Source table: TimeLogs

    • ชื่อ View: ลงชื่อเข้า/ออก

    • Show columns:

      1. EmployeeID → แบบ Drop-down หรือกรอกอัตโนมัติ

      2. CheckType → “เข้า” / “ออก”

      3. Note → ถ้ามี

    • Columns ที่ “ซ่อน”:

      • Timestamp (ยังใช้งานอยู่แต่ไม่ต้องให้ผู้ใช้กรอก)

      • LogID

    ✅ เมื่อผู้ใช้กรอกเสร็จ → ระบบจะสร้างเรคคอร์ดพร้อม Timestamp ทันที


    🗂 View สำหรับดูประวัติ (พนักงาน)

    ✅ View: “ประวัติของฉัน”

    • Type: Table

    • Source: TimeLogs

    • Slice: Filter ให้แสดงเฉพาะ EmployeeID ของผู้ใช้ปัจจุบัน
      (ถ้าเปิด User Login Authentication)

    • Group by: Date


    📊 View สำหรับผู้ดูแล (HR)

    • Dashboard รวม:

      • 🔹 Chart: จำนวนนับเข้า-ออกต่อวัน

      • 🔹 Table: พนักงานที่มาทำงานวันนี้

      • 🔹 Filter: ดูรายบุคคล



    ขั้นตอนการดาวโหลดและติดตั้ง XAMPP บน Ubuntu

     ขั้นแรก ให้ดาวโหลดโปรแกรม Xampp จากเวบไซต์ทางการของ xampp สำหรับเวอรชันล่าสุดคือ PHP 8.0.30 แต่ถ้าใครที่พัฒนา Script language มานานแล้ว ก็สามารถย้อนไปดาวโหลดตัวก่อนหน้าได้ เพื่อให้รองรับการใช้งานร่วมกันได้ compatible 




    ขั้นสอง การเข้าถึงไฟล์ที่โหลดมา สำหรับมือใหม่ ให้เปิด terminal แล้วพิมพ์คำสั่งเข้าห้อง เพื่อไปหาไฟล์ที่ดาวโหลดมาจากขั้นตอนแรก  คำสั่งคือ 

    ตรง username ชื่อเครื่อง จะแตกต่างกันออกไปตามที่ผู้ใช้งานติดตั้งลงโปรแกรม ubuntu ครั้งแรก 

    cd /home/[username]/Downloads

    chmod 755 [filename]

    เป็นการเปลี่ยนโหมดให้สามารถ run ไฟล์ติดตั้งได้ ปกติแล้วชื่อของไฟล์ คือ xampp-linux-x64-8.2.0-0-installer.run
    sudo ./[filename]
    จะเป็น
    sudo ./xampp-linux-x64-8.2.0-0-installer.run
    ต้องใส่รหัสผ่านเครื่องของ admin ในการยืนยัน การติดตั้ง 
    จากนั้น จะมีหน้าต่างการติดตั้งขึ้นมา กดปุ่มต่อไป จนจบขั้นตอนการติดตั้ง 

    คลิก Finish 
    การเรียกหน้าต่างควบคุมการใช้งาน xampp ภายหลัง 
    sudo /opt/lampp/./manager-linux-x64.run

    การเรียกทดสอบระบบฐานข้อมูล ไปที่โปรแกรมท่องเนต เช่น Google Chrome แล้วพิมพ์ localhost/