[Series Email] Bài 8: Hẹn Giờ Gửi Email

Ở bài trước, mình đã giới thiệu đến các bạn cách gửi email xác nhận điền form bằng cách tạo installable trigger. Tương tự, để hẹn giờ gửi email, các bạn cũng phải tạo installale trigger, bằng cách thủ công hoặc bằng Apps Script đều được.

Tạo installable trigger thủ công

Trong Apps Script, các bạn chọn Edit -> Current Project’s Triggers. Cửa sổ Installable trigger mở ra, các bạn chọn tiếp Add Trigger

Installable trigger
Installable trigger

Tại đây, các bạn chọn tiếp như sau:

Choose which function to run: guiemail (function chứa hàm sendEmail đã viết ở trên)

Select event source: Time-driven. Đây là chìa khóa để hẹn giờ email, Time-driven hay còn gọi là Clock trigger, cho phép bạn hẹn thời gian để chạy function trong apps script

Select type of time based trigger Select minute interval: Có nhiều lựa chọn cho các bạn ở phần này. Trong ví dụ này, mình chọn Minutes timerEvery minute với ý nghĩa: trigger sẽ được chạy theo phút, và mỗi phút sẽ chạy 1 lần

Bấm Save để lưu lại và khởi tạo trigger

Hẹn giờ gửi email bằng cài đặt installable trigger thủ công

Vậy là chúng ta đã khởi tạo xong 1 installable trigger và cứ sau mỗi phút function guiemail sẽ chạy 1 lần.
Lưu ý: trong mục Select type of time based trigger, các bạn có thể chọn Specific date and time và điền thời gian chạy trigger theo mong muốn (theo format yyyy-mm-dd hh-mm)

Tạo installable trigger bằng Apps Script

Function henGioEmail dưới đây sẽ tạo 1 installable trigger và chạy sau 1 phút
Lưu ý: thời gian trong hàm after() được tính theo mili giây với 1 giây = 1000 mili giây

Giải thích thêm:
.newTrigger() chứa tên function chứa hàm sendEmail
.timeBased() chọn chế độ Time-driven
.create() có chức năng giống nút Save, khởi tạo trigger

Thay vì sử dụng after() để chạy trigger sau một khoảng thời gian. Các bạn có thể sử dụng các hàm dưới đây (nguồn: Google Apps Script) tùy theo nhu cầu:

HàmMô tả ngắn
after(durationMilliseconds)Chạy trigger sau một khoảng thời gian (mili giây)
at(date)Chạy trigger vào một khoảng thời gian cụ thể
atDate(year, month,day)Chạy trigger vào một khoảng thời gian cụ thể theo năm, tháng, ngày
atHour(hour)Thời điểm (giờ) mà trigger sẽ chạy mỗi ngày
everyDays(n)Chạy trigger mỗi n ngày
everyHours(n)Chạy trigger mỗi n giờ
everyMinutes(n)Chạy trigger mỗi n phút
everyWeeks(n)Chạy trigger mỗi n tuần
inTimezone(timezone)Chạy trigger theo Múi giờ (danh sách múi giờ)
nearMinute(minute)Thời điểm (phút) mà trigger sẽ chạy mỗi ngày (gần đúng). Sử dụng kết hợp với atHour()
onMonthDay(day)Thời điểm (ngày trong tháng) mà trigger sẽ chạy mỗi tháng
onWeekDay(day) Thời điểm (ngày trong tuần) mà trigger sẽ chạy mỗi tuần. Ví dụ (chạy vào thứ 6 hàng tuần): .onWeekDay(ScriptApp.WeekDay.FRIDAY)

Cho một khoảng thời gian cụ thể

Nếu bạn muốn hẹn giờ gửi email vào thời gian tính theo năm, tháng, ngày, giờ, phút thì có thể sử dụng hàm at() theo ví dụ dưới đây

Lưu ý quan trọng:
1. Thời gian trong lệnh new Date() phải được sắp xếp theo format năm, tháng, ngày, giờ, phút. Không thể tính theo giây.
2. Riêng tháng thì vì java script tính tháng bắt đầu từ 0 nên nếu các bạn muốn thời gian là tháng 7 thì phải ghi trong new Date() là 6 (giống ví dụ)

Thời gian lấy từ Google Sheet

Giả sử trong file Google Sheet, ở ô D3 mình có thời gian sau: 10/07/2019 22:37:00 (ngày 10 tháng 7 năm 2019, 22 giờ 37 phút), để đưa thời gian này vào hẹn giờ, các bạn làm như sau:

Leave a Reply