Dùng Apps Script gửi mail hàng loạt từ Google sheets (1 người xem)

Người dùng đang xem chủ đề này

Maika8008

Thành viên gạo cội
Tham gia
12/6/20
Bài viết
4,890
Được thích
5,889
Donate (Momo)
Donate
Giới tính
Nam
Chuẩn bị dữ liệu kiểu thế này:
1774578521131.png
rồi vào menu Tiện ích -> Apps script dán code sau đây vào:
JavaScript:
function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 
  // Xác định dòng cuối cùng có dữ liệu trong cột A–D
  var lastRow = sheet.getLastRow();
 
  // Lấy dữ liệu từ A2 đến D:lastRow
  var data = sheet.getRange("A2:D" + lastRow).getValues();
 
  // Kiểm tra ô A2 trước khi chạy
  var firstRecipient = data[0][0];
  var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  if (!firstRecipient || !emailRegex.test(firstRecipient)) {
    SpreadsheetApp.getUi().alert("Ô A2 rỗng hoặc không đúng định dạng email. Dừng chương trình.");
    return;
  }
 
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var recipient = row[0]; // Cột A: địa chỉ email
    var subject   = row[1]; // Cột B: chủ đề
    var body      = row[2]; // Cột C: nội dung
    var attachmentUrl = row[3]; // Cột D: đường dẫn file
   
    var options = {};
    var status = "";
   
    if (attachmentUrl && attachmentUrl.trim() !== "") {
      try {
        var fileId = "";
        var startIndex = attachmentUrl.indexOf("/d/");
        if (startIndex !== -1) {
          startIndex += 3;
          var endIndex = attachmentUrl.indexOf("/", startIndex);
          if (endIndex !== -1) {
            fileId = attachmentUrl.substring(startIndex, endIndex);
          } else {
            fileId = attachmentUrl.substring(startIndex);
          }
        } else {
          fileId = attachmentUrl.trim();
        }
       
        var file = DriveApp.getFileById(fileId);
        options.attachments = [file];
      } catch (e) {
        Logger.log("Không thể lấy file: " + attachmentUrl + " - " + e.message);
        status = "Lỗi file";
      }
    }
   
    try {
      MailApp.sendEmail({
        to: recipient,
        subject: subject,
        body: body,
        attachments: options.attachments
      });
      if (status === "") {
        status = "Đã gửi";
      }
    } catch (e) {
      status = "Lỗi gửi email";
      Logger.log("Không thể gửi email tới " + recipient + " - " + e.message);
    }
   
    // Ghi trạng thái vào cột E (cột thứ 5)
    sheet.getRange(i + 2, 5).setValue(status);
  }
}

Chép dán tiếp code này vào:
JavaScript:
function onOpen(){
  let ui = SpreadsheetApp.getUi()
  ui.createMenu("Macro")
  .addItem("Gui email","sendEmails")
  .addToUi()
}
Reset file G. sheets của bạn, sẽ thấy menu có dạng kiểu thế này:
1774578959356.png
Chạy macro Gui email từ menu Macro mới tự tạo bên trên.

LƯU Ý: lấy link (url) file đính kèm từ Google Drive của chính tài khoản gửi mail băng cách chuột phải vào file -> Chia sẻ -> Sao chép liên kết. Tất nhiên trước đó bạn phải chia sẻ file công khai dạng có quyền xem khi có liên kết.
Bài đã được tự động gộp:

Gửi mail hàng loạt từ G.sheets tránh được việc phải cài và thiết lập Outlook lôi thôi và dễ mắc lỗi.
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom