EP3 | สร้างปุ่ม "หยิบใส่ตะกร้า" พร้อมระบบเตรียมชำระเงิน

คลิก Data เลือกตารางสินค้า product กำหนดชนิดของดาต้า ดังนี่

ProductID  เป็น text   ค่าเริ่มต้น UNIQUEID() และเป็น key หลักของตาราง 

ตาราง Cart 

cartID  เป็น text   ค่าเริ่มต้น UNIQUEID() และเป็น key หลักของตาราง 

SalesID ref ตาราง Sales

ProductID ref ตาราง product 

คอลัมน์ Price   ใส่ [ProductID].[Price]

Amount ใส่ [Quantity]*[Price]


สร้างหน้าตะกร้าสินค้า Cart_frm

ตาราง cart

มุมมอง form


คำสั่ง Action ตารางสินค้า Product 

ชื่อ Create Sales If None

Do this : Add a new row 

table to add to : Sales 

salesID = UNIQUEID() 

CheckedOut? =False

SalesDate = NOW()

อย่าลืมคลิกที่ behavior 

ใส่ค่า

ISBLANK(

  ANY(

    SELECT(

      Sales[SalesID],

      [CheckedOut?] = FALSE

    )

  )

)


คำสั่ง Action ชื่อ Go To Cart Form

ตาราง product

do this : Go to another view

LINKTOFORM(

  "Cart_Form 2",

  "SalesID", ANY(SELECT(sales[SalesID], [CheckedOut?] = FALSE)),

  "ProductID", [ProductID],

  "Quantity", 1

)

สร้างอีก 1 action ชื่อ  Add to card

do this : Group execute a sequence of action 

add สองแอคชั่น ที่สร้างก่อนหน้า 



ทดสอบ action script แล้ว พบว่า salesID ไม่ถูกสร้างในครั้งแรก และส่งค่าไปยังตะกร้าสินค้า 

ตรวจสอบแล้ว ขั้นต้น แนวทางแก้ไข

ไปที่แท็บ Data แล้วสร้าง CurrentCartSlice  ของตารางขาย Sales ใส่ฟิลเตอร์เพื่อกรอง [CheckedOut?] = FALSE


แล้วทดสอบ โค้ดใหม่ พบว่า script สามารถ gen ค่าบิลขายสินค้าให้ตอนหยิบสินค้าลงตะกร้า แล้ว 

สำหรับ ep3 น่าจะจบเท่านี้ก่อน 

"EP2 | ฟอร์มสินค้า + หมวดหมู่ : ตั้งต้นระบบขายใน AppSheet"

 

มาเริ่มต้นระบบขายของเราให้เป็นรูปเป็นร่าง! EP นี้เราจะสอนวิธีสร้างแบบฟอร์มเพิ่มสินค้าอย่างง่ายใน AppSheet พร้อมเทคนิคการแยกหมวดหมู่สินค้า เช่น ขนม, เครื่องดื่ม, ของใช้ และยังสอนวิธีนำเข้าสินค้าตัวอย่างจาก Google Sheets เข้าแอปแบบรวดเร็ว เหมาะกับร้านค้าขนาดเล็กที่อยากเริ่มต้นใช้ Mini POS เป็นของตัวเองในไม่กี่นาที!


🧩  (สรุปโครงสร้าง):

  1. เริ่มจากการสร้างตารางสินค้า ใน Google Sheets

    • Column แนะนำ: ProductID, ProductName, Category, Price, Stock

  2. เพิ่มข้อมูลตัวอย่างลงไป

    • 5–10 รายการ พร้อมใส่หมวดหมู่ เช่น ขนม, เครื่องดื่ม, ของใช้

  3. เชื่อม Google Sheets เข้ากับ AppSheet

    • ตั้งค่า Data Type ให้เหมาะ เช่น Price เป็น Decimal, Stock เป็น Number

  4. สร้างฟอร์มเพิ่มสินค้าใน AppSheet

    • ปรับ UX ให้ดูง่าย ใช้งานสะดวก

    • ใช้ Enum หรือ EnumList สำหรับหมวดหมู่

  5. Preview & ทดสอบการกรอกฟอร์มสินค้า

Mini POS ด้วย AppSheet EP1


1. เตรียม Google Sheets (ฐานข้อมูลเบื้องต้น)

ขั้นแรก ไปที่ Drive ของ gmail ส่วนตัวของเรา
สร้างโฟลเดอร์ขึ้นมาเก็บไฟล์ฐานข้อมูล
New Folder กำหนดชื่อ เป็น Mini Pos V3
และคลิกสร้างตารางงาน New Sheet

ตารางสินค้า product

ProductID ProductName Price StockQty Category ProductImage

ตาราง Sales

SalesID SalesDate CheckedOut?

ตาราง ตะกร้าสินค้า Cart

CartID SalesID ProductID Quantity Price Amount CheckedOut?

ตารางเก็บรายละเอียดการขาย Sales detail

DetailID SalesID ProductID Quantity Price Amount


ขั้นตอนต่อมา



2. นำเข้า Google Sheets เข้า AppSheet



เข้าเว็บ https://www.appsheet.com

ล็อกอินด้วยบัญชี Google ของคุณ

กด Make a new app

เลือก Start with your own data

เลือกไฟล์ Google Sheets ที่เตรียมไว้

AppSheet จะนำเข้าตารางทั้ง 4 มาเป็นตารางในแอป

ตรวจสอบว่าแต่ละตารางถูกตั้งค่า Key column เรียบร้อย (เช่น ProductID เป็น Key ใน Products, CartID ใน Cart)


กด Save
 

3. สรุป



เราได้สร้างฐานข้อมูลเบื้องต้นสำหรับ Mini POS

พร้อมเพิ่มตาราง Cart เพื่อเก็บข้อมูลสินค้าที่อยู่ในตะกร้าก่อนสั่งซื้อ

นำเข้าข้อมูลทั้งหมดไปยัง AppSheet เรียบร้อย

ตอนต่อไปจะเริ่มสร้างฟอร์มใส่สินค้าในตะกร้า และสร้างหน้าจอตะกร้าสินค้าในแอป



"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
      )
    )