Nội dung
Không cần code Apps Script
Chúng ta hoàn toàn có thể thực hiện việc gửi email xác nhận điền form mà không cần dùng bất kì một dòng code nào! Trước tiên, bạn hãy chuẩn bị 1 file Google Form như hình:

Tiếp đến làm theo các bước sau:
1. Chọn Settings
2. Chọn Collect email addresses
3. Chọn Response receipts
4. Chọn If respondent requests it hoặc Always

Mục đích của việc trên là bật chế độ Email Confirmation có sẵn trong Google Form.
- Ưu: không cần code, tiện lợi, nhanh chóng
- Nhược: không tùy chỉnh được nội dung email

Apps Script
Mở Google Sheet – Apps Script
Làm theo các bước sau:
- Chọn Responses
- Chọn icon Google Sheet

3. Sau khi đặt tên, bạn chọn Create. Lúc này file Google Sheet sẽ mở ra trong cửa sổ mới

File Google Sheet được mở, bạn chọn tiếp Tools -> Script editor để mở tiếp Apps Script

Chương trình gửi email xác nhận điền form
Chương trình chính
Bắt đầu với bước khai báo
1 2 | var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('sheet1'); // Đổi 'sheet1' thành tên sheet của bạn |
Dùng hàm sendEmail với 3 thành phần cơ bản gồm: người nhận (recipient), chủ đề (subject), và nội dung (body). Trong đó biến recipient lấy giá trị của ô chứa email trong Google Sheet. Vì Câu trả lời mới nhất được gửi sẽ luôn xuất hiện ở dưới cùng, nên ta dùng getLastRow.
1 2 3 4 | var recipient = sheet.getRange(sheet.getLastRow(), 2).getValue(); //2 là cột B var subject = 'Xác nhận gửi email'; var body = 'Xin chào, cảm ơn bạn đã điền form'; MailApp.sendEmail(recipient, subject, body); |
Ta được chương trình sau:
1 2 3 4 5 6 7 8 9 | function emailConfirmation() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('sheet1'); var recipient = sheet.getRange(sheet.getLastRow(), 2).getValue(); var subject = 'Xác nhận gửi email'; var body = 'Xin chào, cảm ơn bạn đã điền form'; MailApp.sendEmail(recipient, subject, body); } |
Sử dụng installable trigger
Trigger onEdit hay onOpen được gọi chung là các simple trigger. Lưu ý rằng các bạn không thể dùng simple trigger trong việc gửi email xác nhận điện form. Vì 2 lí do: thứ nhất, simple trigger không thể kết hợp với hàm sendEmail được; thứ hai, chúng cũng không hoạt động khi có người gửi form. Tóm lại, để thực hiện chúng ta phải dùng 1 loại trigger khác, được gọi là installable trigger (cài đặt trigger thủ công).
Trong Apps Script, các bạn chọn Edit trên thanh công cụ -> Current project’s triggers. Cửa sổ installable trigger mở lên. Các bạn chọn tiếp Add Trigger

Các bạn tùy chỉnh như sau:
– Choose which function to run: emailConfirmation (hàm đã viết ở Apps Script)
– Choose which deployment should run: Head
– Select event source: From spreadsheet
– Select event type: On form submit (đây là lựa chọn quan trọng nhất giúp bạn chạy chương trình khi có người gửi form)

Bấm Save khi đã hoàn thiện. Các bạn có thể sẽ phải Xác thực quyền để đưa trigger vào hoạt động (xem video). Như vậy là chúng ta đã hoàn thiện xong!
Nâng cao
Về cơ bản thì chương trình đã xong, tuy nhiên mình muốn nói thêm phần tùy chỉnh nội dung email. Vì nếu chỉ làm như trên thì email xác thực có nội dung quá đơn giản. Nếu mình muốn phần thông tin mà người gửi vừa nhập vào được đưa chúng vào nội dung email thì sao?
Ví dụ trong form có câu hỏi “Tên bạn là gì?”. Nếu người gửi nhập vào là “An”, thì email xác nhận sẽ có dạng: “Chào An, cảm ơn bạn đã gửi form”
Tiếp tục chương trình trên. Cho cột C là cột chứa câu trả lời cho câu hỏi “Tên bạn là gì?”, chúng ta dùng biến name để lấy tên và dùng nối chuỗi cho biến body.
Lưu ý: các bạn có thể xuống dòng trong biến body bằng cách thêm \r\n
1 2 3 4 5 6 7 8 9 10 11 | function emailConfirmation() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('sheet1'); var recipient = sheet.getRange(sheet.getLastRow(), 2).getValue(); var subject = 'Xác nhận gửi email'; var name = sheet.getRange(sheet.getLastRow(), 3).getValue(); var body = 'Xin chào ' + name + ', \r\n Cảm ơn bạn đã điền form'; MailApp.sendEmail(recipient, subject, body); } |
Tránh spam
Bị spam Google Form là vấn đề rất phổ biến. Cụ thể, có những thành phần xấu muốn spam để tạo ra dữ liệu sai khi câu trả lời được gửi về Google Sheet. Hậu quả là Google Sheet sẽ có cả đống câu trả lời ảo. Và còn nghiêm trọng hơn khi chúng ta viết function gửi email xác nhận điền form. Vì tối đa một tài khoản chỉ có thể gửi đi 100 email/ngày bằng Apps Script. Nếu có người cứ liên tục spam, thì không chỉ dữ liệu trong Google Sheet bị ảnh hưởng, mà có thể những người gửi form sau sẽ không nhận được email xác nhận.
Để tránh điều này, các bạn nên bật chế độ hạn chế 1 form / ngày / người bằng cách: Trong phần chỉnh sửa form, các bạn chọn Settings -> Limit to 1 response
Các bạn cũng nên bật chỉnh sửa câu trả lời cho người gửi vì không phải ai gửi form 1 lần mà cũng chắc chắn chính xác thông tin. Cũng trong phần Settings, các bạn chọn Edit after submit