โค้ดที่แชร์
สมุดเยี่ยม — ลงชื่อฝากข้อความ ลง Google Sheets
ทีม EasyGAS· แชร์เมื่อ 9 ต.ค. 69
ต้นฉบับวางหน้าเว็บบน GitHub Pagesโคลนไปแล้วเผยแพร่บน Google ได้ฟรี ไม่ต้องใช้ Pro
ตัวอย่างระบบเล็ก ๆ จากทีม EasyGAS: หน้าเว็บให้คนลงชื่อและฝากข้อความ บันทึกลง Google Sheets ของเจ้าของแอป
หลังโคลน กด เผยแพร่ ได้เลย ไม่ต้องตั้งค่าอะไร — สคริปต์สร้างชีตชื่อ "สมุดเยี่ยม (EasyGAS)" ให้เองครั้งแรกที่มีคนใช้ และจำ ID ไว้ใน Script Properties (ไม่มี ID ใครฝังในโค้ด)
ใช้เป็นต้นแบบของ: แบบฟอร์มรับเรื่อง, กล่องข้อเสนอแนะ, สมุดลงชื่อหน้างาน
โค้ดที่แชร์ · สมุดเยี่ยม — ลงชื่อฝากข้อความ ลง Google Sheets3 ไฟล์ · 9.1 KB · เวอร์ชัน 1 · สแกนแล้วไม่พบคีย์ส่วนตัว · โคลนแล้ว 2 ครั้ง
easygaside.tech/s/8ntkaj5gqtไฟล์appsscript.json15 บรรทัดCode.gs78 บรรทัดIndex.html105 บรรทัด
สิทธิ์ที่ Google จะถามตอนเผยแพร่อ่าน/เขียน Google Sheets (spreadsheets)ตั้ง trigger ให้ตัวเอง (script.scriptapp)Sheets
โดย ทีม EasyGAS
ไฟล์ทั้งหมด
อ่านก่อนโคลนได้ ใน EasyGAS IDE จะได้ไฟล์ชุดนี้เป็นโปรเจกต์ใหม่ แล้วค่อยเผยแพร่เข้าบัญชี Google ของคุณ
1/**2 * สมุดเยี่ยม (Guestbook) — ตัวอย่างระบบจาก EasyGAS IDE3 * หน้าเว็บให้คนลงชื่อและฝากข้อความ → บันทึกลง Google Sheets ของเจ้าของแอป4 * ชีตถูกสร้างให้เองครั้งแรกที่ใช้ (ไม่ต้องแก้ ID อะไรในโค้ด)5 */67var SHEET_NAME = 'Guestbook';8var PROP_KEY = 'GUESTBOOK_SPREADSHEET_ID';910function doGet() {11 return HtmlService.createHtmlOutputFromFile('Index')12 .setTitle('สมุดเยี่ยม')13 .addMetaTag('viewport', 'width=device-width, initial-scale=1');14}1516/** ชีตที่เก็บข้อความ: สร้างครั้งแรก แล้วจำ ID ไว้ใน Script Properties */17function getSheet_() {18 var props = PropertiesService.getScriptProperties();19 var id = props.getProperty(PROP_KEY);20 var ss = null;21 if (id) {22 try {23 ss = SpreadsheetApp.openById(id);24 } catch (e) {25 ss = null;26 }27 }28 if (!ss) {29 ss = SpreadsheetApp.create('สมุดเยี่ยม (EasyGAS)');30 props.setProperty(PROP_KEY, ss.getId());31 }32 var sheet = ss.getSheetByName(SHEET_NAME);33 if (!sheet) {34 sheet = ss.getSheets()[0];35 sheet.setName(SHEET_NAME);36 sheet.appendRow(['เวลา', 'ชื่อ', 'ข้อความ']);37 sheet.setFrozenRows(1);38 }39 return sheet;40}4142/** บันทึกข้อความใหม่ แล้วส่งรายการล่าสุดกลับไปให้หน้าเว็บ */43function addEntry(payload) {44 var lock = LockService.getScriptLock();45 lock.waitLock(10000);46 try {47 var name = String((payload && payload.name) || '').trim().slice(0, 60);48 var message = String((payload && payload.message) || '').trim().slice(0, 500);49 if (!name) return { ok: false, error: 'กรุณาใส่ชื่อ' };50 if (!message) return { ok: false, error: 'กรุณาพิมพ์ข้อความ' };51 var sheet = getSheet_();52 sheet.appendRow([new Date(), name, message]);53 return { ok: true, entries: listEntries() };54 } catch (e) {55 return { ok: false, error: 'บันทึกไม่สำเร็จ: ' + e.message };56 } finally {57 lock.releaseLock();58 }59}6061/** 10 ข้อความล่าสุด ใหม่สุดก่อน */62function listEntries() {63 var sheet = getSheet_();64 var last = sheet.getLastRow();65 if (last < 2) return [];66 var count = Math.min(10, last - 1);67 var rows = sheet.getRange(last - count + 1, 1, count, 3).getValues();68 return rows69 .reverse()70 .map(function (r) {71 return {72 time: Utilities.formatDate(new Date(r[0]), 'Asia/Bangkok', 'd MMM yyyy HH:mm'),73 name: String(r[1]),74 message: String(r[2])75 };76 });77}78รีวิว
รีวิวได้หลังโคลนไปใช้ · ทำได้ในโปรแกรม EasyGAS IDE
ยังไม่มีรีวิว
ถามตอบ
ถามคนแชร์ เล่าว่าเอาไปใช้แล้วเป็นยังไง หรือแนบเวอร์ชันต่อยอดของคุณ
ยังไม่มีใครถาม เป็นคนแรกก็ได้