Thay đổi senders email trong google sheet

  • 1. Gửi email cho danh sách nhập từ Google Sheet
  • Một vài lưu ý nhỏ cho phần body
  • 2. Gửi email kết hợp trigger onOpen – onEdit
  • Add-on

Trong bài lần này, mình sẽ chia sẻ về cách gửi email cho danh sách nhập vào từ Google Sheet. Ngoài ra, có một số lưu ý khi các bạn muốn kết hợp trigger onEdit và onOpen với hàm sendEmail()

File luyện tập (Tạo bản sao về Drive để sử dụng):

https://docs.google.com/spreadsheets/d/1sxxxA1MRgxoPeIdfs3QkN0IbtDYGNLmyYjeobQnkU9s/edit?usp=sharing

Cho file Google Sheet như sau

Thay đổi senders email trong google sheet

Mục đích của chúng ta là gửi nội dung ở cột Body cho các email tương ứng ở cột Email. Bắt đầu nhé!

functionguiHet(){

  varss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var lr=ss.getLastRow();

  varemail   = ss.getRange(2,1,lr-1).getValues();

  varsubject= ss.getRange(2,2,lr-1).getValues();

  varbody    = ss.getRange(2,3,lr-1).getValues();

}

Sau khi mở Apps Script bằng cách vào phần Công cụ -> Trình chỉnh sửa tập lệnh. Ta tiến hành bước khai báo biến. Sử dụng các biến email, subject, và body để lấy danh sách email, chủ đề, và phần nội dung ở các cột A, B, và C

Tiếp đến, sử dụng vòng lặp for để gửi email cho từng địa chỉ ở cột A. Kết quả cuối cùng sẽ được như đoạn code sau:

functionguiHet(){

  varss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var lr=ss.getLastRow();

  varemail   = ss.getRange(2,1,lr-1).getValues();

  varsubject= ss.getRange(2,2,lr-1).getValues();

  varbody    = ss.getRange(2,3,lr-1).getValues();

  for(vari=0;i <email.length;i++){

    MailApp.sendEmail(email[i],subject[i], body[i]);

  }

}

Một vài lưu ý nhỏ cho phần body

  • Nếu muốn xuống dòng trong 1 ô của Google Sheet, bấm Alt + Enter
  • Bạn có thể format cho ô trong Google Sheet, nhưng khi lấy dữ liệu từ ô đó để gửi email, thì các kiểu định dạng của bạn sẽ bị mất đi. Để xem cách gửi email có format, mời các bạn xem bài 1

2. Gửi email kết hợp trigger onOpen – onEdit

Một câu hỏi khác mà chắc nhiều bạn đã nghĩ tới khi đọc bài này. Đó là làm thế nào để tự động gửi email khi thay đổi một giá trị bất kì trong Apps Script? Hay thực tế hơn, chúng ta đã biết Google Sheet có thể liên kết biểu mẫu với Google Form. Sẽ thế nào nếu mỗi lần có người gửi form thì ta tự động gửi email cho người đó?

Thay đổi senders email trong google sheet
Kết hợp gửi email với Google Form?

Theo tự nhiên thì có thể bạn sẽ nghĩ ngay đến 2 trigger cực kì thông dụng là onOpen và onEdit. Tuy nhiên thì thực tế sẽ làm bạn thất vọng thôi. Một lần nữa các trigger giới hạn chúng ta không thể làm được những điều trên. Nguyên nhân là vì các trigger không thể kết hợp được với các function sử dụng thông tin (identity) của người dùng. Khi các bạn dùng hàm sendEmail để gửi email, các bạn đã để Apps Script sử dụng email của các bạn với tư cách người gửi để gửi đi email đó. Nói cách khác, email của bạn chính là thông tin người dùng. Các bạn có thể đọc thêm về những thứ trigger giới hạn

Add-on

Vậy nên kết hợp Google Form – onOpen – sendEmail là chuyện không thể. Tuy nhiên “gửi email xác nhận khi có người vừa gửi form” thì có thể thực hiện được. Một trong các cách đỡ nhức đầu nhất là nhờ sự can thiệp của bên thứ 3 – add-on.

Với từ khóa “Email confirmation” bạn sẽ tìm được cả tá những add-on giúp bạn thực hiện điều trên.

Thay đổi senders email trong google sheet
Add-on Email Notifications for Forms (max 20 email / ngày, trả phí để gửi nhiều hơn)
Thay đổi senders email trong google sheet
Add-on Form Confirmation Emails (sử dụng thủ thuật để gửi email không giới hạn)

Các bạn có thể tìm hiểu về 2 add-on Email Notifications for FormsForm Confirmation Emails (tải về miễn phí trực tiếp trong phần add-on của Google form).