Bạn muốn tự động gửi email chúc mừng sinh nhật khách hàng, giới thiệu sản phẩm mới, hoặc đơn giản là nhắc nhở công việc? Bài viết này sẽ hướng dẫn bạn cách hẹn giờ gửi email tự động bằng Google Sheets và Google Apps Script. Chúng ta sẽ kết hợp sử dụng trigger trong Apps Script và kiến thức về mảng để đạt được mục tiêu này. Bạn sẽ thấy rằng phương pháp này không chỉ áp dụng cho việc gửi email mà còn có thể thực hiện nhiều tác vụ tự động khác. Hãy chuẩn bị sẵn sàng với Google Sheets và cùng bắt đầu!
Chuẩn bị Dữ Liệu trên Google Sheets
Bảng dữ liệu để gửi thư tự động
Tạo một bảng dữ liệu đơn giản trên Google Sheets với các cột sau:
- Cột A: Địa chỉ email (ví dụ: [email protected])
- Cột B: Ngày gửi email (ví dụ: 20/10/2024)
Thêm hai cột phụ để trích xuất tháng và ngày từ cột B:
- Cột C (Tháng):
=MONTH(B2)
- Cột D (Ngày):
=DAY(B2)
Chúng ta chỉ cần tháng và ngày vì việc gửi email sẽ được thực hiện hàng năm.
Code Gửi Email Tự Động trong Google Apps Script
Lấy Giá Trị Ngày và Tháng Hiện Tại
Đầu tiên, chúng ta cần lấy giá trị ngày và tháng khi code được thực thi. Điều này rất quan trọng để so sánh với dữ liệu trên Google Sheets.
Cách gửi mail theo trigger trong Google Sheets
const today = new Date();
const month = today.getMonth() + 1; // Tháng bắt đầu từ 0, nên cần cộng thêm 1
const date = today.getDate();
new Date()
trả về thời gian hiện tại. getMonth()
lấy giá trị tháng (từ 0 đến 11), và getDate()
lấy giá trị ngày trong tháng.
Đọc Dữ Liệu từ Google Sheets
Để tối ưu hiệu suất, chúng ta sẽ đọc toàn bộ dữ liệu từ Sheets một lần và lưu vào mảng trong Apps Script.
Đọc dữ liệu từ sheets
const data = SpreadsheetApp.getActive().getSheetByName('data').getDataRange().getValues();
Đoạn code trên giả sử bảng dữ liệu của bạn nằm trong sheet có tên “data”.
Lọc Dữ Liệu theo Ngày và Tháng
Tiếp theo, chúng ta lọc dữ liệu trong mảng data
để tìm các dòng có tháng và ngày trùng khớp với ngày hiện tại.
Lọc dữ liệu mảng trong google sheets
const list = data.filter(record => record[2] === month && record[3] === date);
Phương thức filter
sẽ trả về một mảng mới chỉ chứa các dòng thỏa mãn điều kiện. record[2]
và record[3]
tương ứng với cột tháng và ngày trong bảng dữ liệu.
Hàm Gửi Email với MailApp
Hàm MailApp.sendEmail
giúp việc gửi email trở nên đơn giản.
hàm gửi mail trong Google Apps Script
function mySendMail(mailTo, subject, body) {
MailApp.sendEmail(mailTo, subject, body);
}
Gửi Email Hàng Loạt
Sử dụng vòng lặp để gửi email cho từng địa chỉ trong danh sách đã lọc.
Gửi mail hàng loạt trong Google Apps Script
if (list.length > 0) {
list.forEach(record => {
let mailTo = record[0];
let subject = "Email Tự Động";
let body = "Nội dung email";
mySendMail(mailTo, subject, body);
SpreadsheetApp.getActive().getSheetByName('log').appendRow([`Đã gửi email tới ${mailTo} vào lúc ${new Date()}`]);
});
}
Tạo một sheet “log” để ghi lại lịch sử gửi email.
Toàn Bộ Code
function sendMailOnBirthday() {
// ... (code đã trình bày ở trên)
}
function mySendMail(mailTo, subject, body) {
// ... (code đã trình bày ở trên)
}
Thiết Lập Trigger trong Google Apps Script
Mở trình chỉnh sửa script, click vào biểu tượng “Triggers”.
trigger trong google apps script
Click “Add Trigger”.
bam nut add trigger
Cấu hình trigger:
- Choose which function to run:
sendMailOnBirthday
- Select event source:
Time-driven
- Select type of time based trigger:
Day timer
- Select hour interval: Chọn thời gian chạy hàng ngày.
thiet lap trigger gui mail google app script
- Choose which function to run:
Lưu trigger.
Vậy là bạn đã hoàn tất việc thiết lập gửi email tự động hàng ngày. Hy vọng bài viết này hữu ích cho bạn!
Discussion about this post