หนึ่งในความสามารถที่มีประโยชน์ที่สุดของ Google Apps Script คือการส่งอีเมลอัตโนมัติ เช่น แจ้งเตือนเมื่อมีคนกรอกฟอร์ม ส่งใบเสร็จ หรือส่งรายงานประจำวัน บทความนี้จะสอนทีละขั้นสำหรับผู้เริ่มต้น
═══════════════════════════════════════
📌 1. ส่งอีเมลด้วย GAS ทำได้อย่างไร
═══════════════════════════════════════
GAS มีบริการส่งอีเมลในตัว 2 ตัว:
• MailApp → ส่งอีเมลง่าย ๆ (แนะนำสำหรับเริ่มต้น)
• GmailApp → ส่งได้ละเอียดกว่า (ผ่านบัญชี Gmail ของคุณ)
ทั้งคู่ใช้บัญชี Google ของคุณส่ง ไม่ต้องตั้งค่า SMTP ใด ๆ
═══════════════════════════════════════
✉️ 2. ส่งอีเมลพื้นฐาน (MailApp)
═══════════════════════════════════════
function sendSimpleEmail() {
MailApp.sendEmail(
"ผู้รับ@example.com", // ถึงใคร
"หัวข้ออีเมล", // subject
"เนื้อหาข้อความ" // body
);
}
กด Save แล้ว Run ครั้งแรกจะขออนุญาตสิทธิ์ส่งเมล ให้กดอนุญาต
จากนั้นเช็คกล่องอีเมลของผู้รับได้เลย
═══════════════════════════════════════
🎨 3. ส่งอีเมลแบบ HTML (สวยกว่า)
═══════════════════════════════════════
ใช้ตัวเลือก htmlBody เพื่อจัดรูปแบบด้วย HTML
function sendHtmlEmail() {
MailApp.sendEmail({
to: "ผู้รับ@example.com",
subject: "ยินดีต้อนรับ",
htmlBody: "<h1 style='color:#4285F4'>สวัสดีครับ</h1>" +
"<p>ขอบคุณที่ลงทะเบียน</p>" +
"<a href='https://example.com'>คลิกที่นี่</a>"
});
}
═══════════════════════════════════════
🔔 4. ส่งอีเมลอัตโนมัติเมื่อมีข้อมูลใหม่
═══════════════════════════════════════
ตัวอย่าง: เมื่อมีคนกรอกฟอร์ม ให้ส่งอีเมลแจ้งแอดมิน
function addDataAndNotify(name, message) {
var sheetId = "วาง_ID_ของ_Sheet";
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName("ชีต1");
// 1) บันทึกลง Sheet
sheet.appendRow([new Date(), name, message]);
// 2) ส่งอีเมลแจ้งเตือนแอดมิน
MailApp.sendEmail(
"admin@example.com",
"มีข้อความใหม่จาก " + name,
"ข้อความ: " + message
);
}
═══════════════════════════════════════
👥 5. ส่งอีเมลหลายคนจากรายชื่อใน Sheet
═══════════════════════════════════════
อ่านรายชื่อจาก Sheet แล้ววนส่งทีละคน
function sendBulkEmail() {
var sheetId = "วาง_ID_ของ_Sheet";
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName("ชีต1");
var data = sheet.getDataRange().getValues();
// เริ่ม i = 1 เพื่อข้ามแถวหัวตาราง
for (var i = 1; i < data.length; i++) {
var name = data[i][0]; // คอลัมน์ A = ชื่อ
var email = data[i][1]; // คอลัมน์ B = อีเมล
MailApp.sendEmail(email, "ข่าวสาร", "สวัสดีคุณ " + name);
}
}
═══════════════════════════════════════
📎 6. แนบไฟล์ไปกับอีเมล
═══════════════════════════════════════
function sendWithAttachment() {
var fileId = "ID_ของไฟล์ใน_Drive";
var file = DriveApp.getFileById(fileId);
MailApp.sendEmail({
to: "ผู้รับ@example.com",
subject: "เอกสารแนบ",
body: "กรุณาดูไฟล์แนบ",
attachments: [file.getAs(MimeType.PDF)]
});
}
═══════════════════════════════════════
⚠️ 7. ข้อจำกัดโควต้า (ต้องรู้)
═══════════════════════════════════════
Google จำกัดจำนวนอีเมลต่อวัน:
• บัญชี Gmail ทั่วไป → ~100 ฉบับ/วัน
• บัญชี Google Workspace → ~1,500 ฉบับ/วัน
ตรวจโควต้าที่เหลือได้:
function checkQuota() {
Logger.log("อีเมลที่ส่งได้อีก: " + MailApp.getRemainingDailyQuota());
}
═══════════════════════════════════════
✅ 8. สรุป
═══════════════════════════════════════
• MailApp.sendEmail(ถึง, หัวข้อ, เนื้อหา) = ส่งอีเมลพื้นฐาน
• ใช้ htmlBody เพื่ออีเมลสวย ๆ
• ผสมกับ Sheet เพื่อส่งอัตโนมัติเมื่อมีข้อมูล หรือส่งหลายคน
• ระวังโควต้ารายวัน (~100 ฉบับสำหรับ Gmail ทั่วไป)
จำไว้: การส่งอีเมลอัตโนมัติช่วยประหยัดเวลามหาศาล
ลองทำระบบแจ้งเตือนอีเมลจากฟอร์มดูเป็นโปรเจกต์แรก 📧