[Series Email] Bài 7: Gửi Email Xác Nhận Điền Form (Email Confirmation)

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:

Google Form
Google Form

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

Xác Nhận Điền Form không dùng code

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
Kết quả khi không dùng Apps Script
Kết quả khi không dùng Apps Script

Apps Script

Mở Google Sheet – Apps Script

Làm theo các bước sau:

  1. Chọn Responses
  2. Chọn icon Google Sheet
Mở Google Sheet
Mở 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

Đặt tên cho file Google Sheet

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

Mở 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

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.

Ta được chương trình sau:

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

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

Xác Nhận Điền Form dùng installable trigger On form submit

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

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

Leave a Reply