Maika8008
Thành viên gạo cội




Chuẩn bị dữ liệu kiểu thế này:

rồi vào menu Tiện ích -> Apps script dán code sau đây vào:
Chép dán tiếp code này vào:
Reset file G. sheets của bạn, sẽ thấy menu có dạng kiểu thế này:

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.
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.

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()
}

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:

