ภาพรวมฟาร์ม
📅 —

ยอดขาย (บาท)

รายรับ vs รายจ่าย (เดือนนี้)

การขายล่าสุด

สัดส่วนชนิดเห็ด

🔔 แจ้งเตือน

วันที่ชนิดเห็ดน้ำหนัก (กก.)ราคา/กก.รวมลูกค้าหมายเหตุ

💚 รายรับ

วันที่หมวดรายละเอียดจำนวน

❤️ รายจ่าย

วันที่หมวดรายละเอียดจำนวน
รหัสล็อตชนิดเห็ดจำนวนวันเพาะอายุสถานะผลผลิต (กก.)ต้นทุน

ผลผลิตรายวัน (30 วัน)

ผลผลิตแต่ละล็อต

วันที่ล็อตชนิดเห็ด น้ำหนัก (กก.)รอบที่คุณภาพหมายเหตุ

กำไร-ขาดทุน รายเดือน

ต้นทุนแยกหมวด

ต้นทุนต่อกิโลกรัม vs ราคาขาย

ยอดขายรายเดือน

รายได้แต่ละชนิดเห็ด

ตารางสรุปรายเดือน

เดือนยอดขาย (กก.)รายได้รายจ่ายกำไร% กำไร

🍄 ชนิดเห็ด

🏪 ข้อมูลฟาร์ม

🗂 หมวดรายจ่าย

☁️ Google Sheets Sync

ยังไม่ได้เชื่อมต่อ Google Sheets
📖 วิธีตั้งค่า Apps Script
1
เปิด sheets.google.com → สร้าง Spreadsheet ใหม่ชื่อ "เห็ดทอง ฟาร์ม"
สร้าง Sheet ย่อย 4 แผ่น: Sales, Income, Expenses, Stock
2
ไปที่ Extensions → Apps Script → ลบโค้ดเดิมออก → วางโค้ดนี้:
const SS = SpreadsheetApp.getActiveSpreadsheet(); function doGet(e) { return handle(e); } function doPost(e) { return handle(e); } function handle(e) { const action = (e.parameter||{}).action; const sheet = (e.parameter||{}).sheet; try { let result; if (action === 'ping') { result = { ok:true, msg:'connected', farm:'เห็ดทอง ฟาร์ม' }; } else if (action === 'read') { const ws = SS.getSheetByName(sheet); const data = ws.getDataRange().getValues(); const hdrs = data[0]; const rows = data.slice(1) .map(r => { const o={}; hdrs.forEach((h,i)=>o[h]=r[i]); return o; }) .filter(r => r.id); result = { ok:true, data:rows }; } else if (action === 'write') { const ws = SS.getSheetByName(sheet); const payload = JSON.parse(e.postData.contents); const rows = payload.rows || []; const hdrs = ws.getRange(1,1,1,ws.getLastColumn()).getValues()[0]; if (ws.getLastRow() > 1) ws.getRange(2,1,ws.getLastRow()-1,ws.getLastColumn()).clearContent(); if (rows.length > 0) ws.getRange(2,1,rows.length,hdrs.length) .setValues(rows.map(r => hdrs.map(h => r[h]??''))); result = { ok:true, count:rows.length }; } return out(result); } catch(err) { return out({ ok:false, error:err.message }); } } function initHeaders() { const sheets = { Sales: ['id','date','type','weight','price','total','customer','note'], Income: ['id','date','cat','desc','amount'], Expenses: ['id','date','cat','desc','amount'], Stock: ['id','type','qty','date','cost','yield','status','note'], Harvest: ['id','date','lotId','type','weight','round','quality','note'] }; Object.entries(sheets).forEach(([name, hdrs]) => { let ws = SS.getSheetByName(name); if (!ws) ws = SS.insertSheet(name); ws.getRange(1,1,1,hdrs.length).setValues([hdrs]); ws.getRange(1,1,1,hdrs.length) .setBackground('#1c2a0e').setFontColor('#c9933a').setFontWeight('bold'); }); } function out(data) { return ContentService .createTextOutput(JSON.stringify(data)) .setMimeType(ContentService.MimeType.JSON); }
3
กด Run → initHeaders() เพื่อสร้างหัวตารางอัตโนมัติ
จะมี popup ขอ Permission → กด Allow
4
กด Deploy → New deployment → Web app
Execute as: Me · Who has access: Anyone → Deploy → คัดลอก URL
5
วาง URL ที่ได้ในช่องด้านบน → กด เชื่อมต่อ

💾 จัดการข้อมูล

ข้อมูลทั้งหมดเก็บใน localStorage
ซิงค์กับ Google Sheets เมื่อตั้งค่าแล้ว

🛒 บันทึกการขาย

0 บาท

💚 บันทึกรายรับ

❤️ บันทึกรายจ่าย

🌿 บันทึกการเก็บผลผลิต

🪵 เพิ่มก้อนเชื้อ