Cách hẹn giờ gửi thư sử dụng Google Sheets

Hôm nay chúng ta sẽ đi cùng nhau từng bước tìm hiểu cách hẹn giờ gửi thư sử dụng Google Sheets kết hợp với một ít code Google Apps Script. Với kiến thức trong bài viết này, bạn có thể áp dụng cho rất nhiều trường hợp khác nhau, từ gửi thư chúc mừng sinh nhật khách hàng khi đến hẹn, gửi thư giới thiệu với khách hàng về sản phẩm, dịch vụ mới của mình, hoặc đơn giản là bạn có thể thiết lập việc gửi thư này như một cơ chế để nhắc việc cho bạn khỏi quên. Chúng ta sẽ sử dụng những kiến thức sau để có thể giải quyết vấn đề gửi thư có hẹn giờ là: sử dụng trigger trong Google Apps Script và kiến thức về làm việc với mảng trong Google Apps Script:

Cách sử dụng mảng dữ liệu trong Google Apps Script

Để hiểu rõ và ứng dụng linh hoạt các kiến thức này cho trường hợp của bạn, hãy tham khảo khóa học Google Apps Script cơ bản của Thanh

Tuy tiêu đề của đề bài là gửi thư, nhưng sau khi theo dõi bài viết này, bạn sẽ hiểu rằng, bạn có thể thực hiện cả những hành động khác, không chỉ riêng gửi thư. Hãy mở Google Sheets để chuẩn bị sẵn cho bài viết này.

Chuẩn bị bảng dữ liệu để có thể hẹn giờ gửi thư tự động

Bảng dữ liệu để gửi thư tự động

Trong bảng dữ liệu đơn giản này, mình chỉ để cột A – là địa chỉ email, cột B – là ngày tháng chúng ta sẽ cần gửi thư đi. Sau đó chúng ta sẽ thêm công thức để lấy ra giá trị ngày tháng ở cột C và cột D lần lượt là:

= MONTH(B2)

= DAY(B2)

Bởi vì chúng ta gửi mail tự động theo ngày, nên chúng ta sẽ bỏ qua dữ liệu về năm trong trường hợp này.

Code gửi thư tự động hẹn giờ theo ngày trong Google Apps Script

Cách lấy giá trị ngày – tháng khi code được thực thi

Cách chúng ta sẽ giải quyết vấn đề này như sau:

  1. Viết đoạn code để gửi thư hoặc thực hiện hành động chúng ta muốn bằng Google Apps Script
  2. Cài đặt trigger thuộc loại Time-Driven trong Google Apps Script để thực hiện code của chúng ta hằng ngày

Như vậy trigger sẽ đảm bảo Code của chúng ta chạy hàng ngày hoặc hàng giờ, … còn chạy đoạn code nào thì hoàn toàn là do chúng ta quyết định. Ở đây, chúng ta sẽ bắt đầu bằng việc so sánh ngày tháng của thời điểm code được chạy với số liệu trên bảng tính ở cột C và D. Đoạn code để thực hiện việc này như sau:

Cách gửi mail theo trigger trong Google Sheets
new Date() sẽ lấy dữ liệu về thời gian khi code được chạy, từ dữ liệu này, chúng ta sẽ lấy ra giá trị tháng bằng cách sử dụng hàm getMonth() và tài sao lại là + 1 ở hàm này? Bởi vì trong Google Apps Script, hàm này sẽ cho giá trị 0 tương ứng với tháng 1, 1 tương ứng với tháng 2, …
getDate() sẽ lấy dữ liệu về ngày trong tháng đó.
Như vậy, với 3 dòng code đơn giản trên, chúng ta đã có thể lấy được dữ liệu hay giá trị ngày – tháng khi code được thực thi.

Cách đọc toàn bộ dữ liệu từ Sheets và Google Apps Script

Để tạo ra những đoạn code chạy nhanh và hiệu quả, một trong những cách làm là chúng ta sẽ hạn chế số lần trao đổi dữ liệu giữa Google Sheets và Google Apps Script. Trong trường hợp này, chúng ta sẽ áp dụng chính xác suy nghĩ này để đọc dữ liệu từ Google Sheets sau đó lưu vào một mảng trong Google Apps Script với đoạn code sau đây:

Đọc dữ liệu từ sheets
Ở đây, chúng ta giả sử là bảng dữ liệu của các bạn được lưu trong Sheet có tên data

Cách lọc dữ liệu từ mảng dữ liệu hai chiều trong Google Apps Script

Sau khi đã load được toàn bộ dữ liệu và lưu vào biến data, chúng ta sẽ tiến hành lọc dữ liệu ở cột C và cột D xem có trùng với ngày tháng code chạy hay không, nếu trùng với ngày tháng code chạy, chúng ta sẽ ghi những dòng dữ liệu này vào một biến tên list

Lọc dữ liệu mảng trong google sheets
Ở đây, chúng ta dùng một phương thức của mảng là filter để lọc theo cột, bởi vì cột Month và Date của bảng dữ liệu là cột thứ 3 và cột thứ 4, vậy nên chúng ta so sánh record[2] với giá trị tháng và so sánh record[3] với giá trị ngày.
Dấu &&  là toán tử “và” trong Google Apps Script, câu lệnh này có thể được hiểu như sau, list là danh sách mà mỗi dòng trong đó có cột thứ 3 cột thứ 4 lần lượt bằng giá trị tháng và giá trị ngày.

Cách gửi mail trong Google Apps Script với MailApp

Thực sự cách gửi mail trong Google Apps Script rất đơn giản với công cụ có sẵn là MailApp, để gửi mail, bạn cần 3 thông tin là email người nhận, tiêu đề email và nội dung mail. Bạn có thể dễ dàng viết ra hàm gửi mail của riêng mình như sau:

hàm gửi mail trong Google Apps Script

Cách gửi mail hàng loạt với MailApp trong Google Apps Script

Sau khi đã xây dựng được hàm gửi mail, như ở phần trên, chúng ta có thể viết code để lăp qua danh sách kết quả, để gửi mail hoặc thực hiện hành động mà chúng ta muốn như sau:
Gửi mail hàng loạt trong Google Apps Script
Trước khi bạn áp dụng code này, hãy đảm bảo rằng trong tài liệu của bạn có 1 sheet với tên là “log”, để ghi lại thông báo việc gửi mail có diễn ra hay không.

Toàn bộ code của bài này

// Author: Nguyễn Đức Thanh
// Web: https://blog.hocexcel.online
// Elearning: https://hocexcel.online
// Elearning for business: https://dtnguyen.business
// YouTube: https://youtube.com/hocexcelonline
function sendMailOnBirthday() {
  const today = new Date()
  const month = today.getMonth() + 1
  const date = today.getDate()

  const data = SpreadsheetApp
                 .getActive()
                 .getSheetByName('data')
                 .getDataRange()
                 .getValues()

  const list = data.filter(record => record[2] === month && record[3] === date)

  if(list.length > 0) {
    list.forEach(record => {
      let mailTo = record[0]
      let subject = "Mail được gửi tự động"
      let body = "Body"
      mySendMail(mailTo, subject, body)
      SpreadsheetApp
        .getActive()
        .getSheetByName('log')
        .appendRow([ `Đã gửi mail tới ${mailTo} vào lúc ${new Date()}` ])
    })
  }
}

function mySendMail(mailTo, subject, body) {
  MailApp.sendEmail(mailTo, subject, body)
}

Cách thiết lập trigger trong Google Apps Script

Sau khi đã viết được đoạn code khá đơn giản để thực hiện hành động gửi mail, chúng ta cần thiết lập trigger để Google có thể thực hiện hành động này khi chúng ta cần.

Bước 1: Trong màn hình Google Apps Script, bấm vào logo Triggers

trigger trong google apps script

Bước 2: bấm nút Add trigger ở góc dưới bên phải của màn hình

bam nut add trigger

Bước 3: ở màn hình thiết lập các tùy chỉnh liên quan đến trigger này, chúng ta sẽ thiết lập như hình, sau đó mình sẽ giải thích từng điểm cho các bạn hiểu:

  1. Choose which function to run: Chọn function bạn muốn chạy khi đến thời điểm được cài đặt
  2. Select event source: Chọn Time-Driven để có thể làm việc với những trigger theo thời gian
  3. Select type of time based trigger: ở đây, để gửi mail theo ngày, bạn hãy chọn Day Timer
  4. Select hour interval: chọn khoảng thời gian bạn muốn function chạy.

thiet lap trigger gui mail google app script

Sau khi đã thiết lập xong trigger, bạn hãy bấm nút Save ở góc dưới của cửa sổ thiết lập này.

Bởi vì trigger theo ngày khá là khó để kiểm tra có hoạt động hay không, mình đã làm videos này để hướng dẫn và test cùng các bạn chức năng của chức năng trigger này, các bạn có thể theo dõi và làm theo.

Như vậy, qua bài viết này, các bạn đã có thể hẹn giờ gửi Email qua Google Apps Script và Google Sheets. Đừng quên tham khảo và đăng ký khóa học Google Apps Script của Thanh

 


Khóa học mới xuất bản