Có những khi bạn phải phản hồi hàng trăm email mỗi ngày cho khách hàng, đồng nghiệp, người theo dõi trang web của bạn,... Nội dung các email ấy đa phần tương tự như nhau.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn các bước dễ dàng tạo email phản hồi từ động với Apps Script. Giải pháp này về cơ bản là tự động trích xuất địa chỉ email, tạo một mẫu email phản hồi. Các bước thực hiện có thể được tóm gọn như sau:
Giả sử tất cả các email của bạn đều được gắn nhãn, để tất cả chúng nằm chung trong một thư mục, bạn có thể sử dụng Apps Script để tìm kiếm nhãn này và trích xuất thư vào Google sheets.
Tìm kiếm các thư dưới nhãn này bằng phương pháp truy vấn tìm kiếm từ dịch vụ GmailApp, nhằm trả về một mảng gồm các chuỗi Gmail phù hợp với truy vấn này.
Truy xuất tất cả các tin nhắn bằng phương thức getMessagesForThreads() .
Từ mảng thư này, trích xuất trường Form và trường chứa nội dung.
Trường Form có dạng:
Your Name
Phân tích cú pháp này bằng một hàm map, tạo một mảng mới từ mảng ban đầu, trong đó mỗi phần tử đề được áp dụng một hàm. Trong trường hợp này, hàm phân tích cú pháp trường Form thành tên và địa chỉ email bằng cách sử dụng biểu thức chính quy.
Cuối cùng, mảng mới này, chứa Name, Email Address và Message Body, được trả về cho bất kỳ hàm nào được gọi là hàm extractEmails ().
Đây là mã:
function
extractEmails() {
// define label
var
label = 'marketing-formula-challenge-#3';
// get all email threads that match label from Sheet
var
threads = GmailApp.search("label:"+ label);
// get all the messages for the current batch of threads
var
messages = GmailApp.getMessagesForThreads(threads);
var
emailArray = [];
// get array of email addresses
messages.forEach(
function
(message) {message.forEach(
function
(d) {
emailArray.push([d.getFrom(),d.getPlainBody()]);
});
});
// parse the From field
var
parsedEmailArray = emailArray.map(
function
(el) {
var
name = "";
var
email = "";
var
matches = el[0].match(/\s*"?([^"]*)"?\s+<(.+)>/);
if (matches) {
name = matches[1];
email = matches[2];
}
else {
name = "N/k";
email = el;
}
return [name,email,"'"+el[1]];
});
return
parsedEmailArray;
}
Để dán vào Google sheets, tôi đã tạo hàm này, hàm này thực sự gọi hàm extractEmails () trên dòng 8 để truy xuất dữ liệu email:
function
pasteToSheet() {
// get the spreadsheet
var
ss = SpreadsheetApp.getActiveSpreadsheet();
var
sheet = ss.getActiveSheet();
// get email data
var
emailArray = extractEmails();
// clear any old data
sheet.getRange(2,1,sheet.getLastRow(),4).clearContent();
// paste in new names and emails and sort by email address A - Z
sheet.getRange(2,1,emailArray.length,3).setValues(emailArray);
}
Chạy hàm pasteToSheet() này sẽ tạo một sheets Google với Name, Email Address và Message Body trong các cột A, B và C
Bây giờ hãy xem lại từng hàng và chỉ định một danh mục. Bạn cần tạo vừa đủ danh mục để tạo sự khác biệt, nhưng cũng không quá nhiều tránh phải thao tác quá nhiều bước tẻ nhạt (điều mà chúng tôi đang cố gắng loại bỏ!).
Trong ví dụ này, chúng tôi đã tạo bốn danh mục gồm: Correct, Extra Transpose, Other, N/a
Trong một tab khác (chúng ta gọi là “Reply Templatesi”), chúng ta sẽ tạo các mẫu thư phản hồi. Đây là các câu trả lời mẫu cho từng danh mục chung.
Sau đó, sử dụng hàm VLOOKUP tiêu chuẩn để thêm một trong các mẫu trả lời này vào mỗi hàng, dựa trên danh mục:
=VLOOKUP(D2,'Reply Templates'!$A$1:$B$6,2,FALSE)
Sheets bây giờ trông như thế này
Bước cuối cùng là tạo thư trả lời Gmail nháp cho từng email trong sheets của bạn, sau đó gửi chúng sau khi kiểm tra nhanh.
Hàm này lấy dữ liệu email đã trích xuất từ sheets trong bước 1, sau đó tìm kiếm chúng trong thư mục nhãn. Nó tạo ra một thư trả lời nháp cho mỗi email với mẫu phản hồi từ dữ liệu sheets trong bước 2.
function createDraftReplies() {
// grab the email addresses from Google Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getRange(2,1,sheet.getLastRow(),7).getValues();
// loop over them, find mnost recent email under that label for that email address
data.forEach(function(arr) {
if (arr[6] === "") {
var emailAddress = arr[1];
var reply = arr[5];
var threads = GmailApp.search('label:marketing-formula-challenge-#3 from:' + emailAddress)[0];
var message = threads.getMessages()[0];
message.createDraftReply(reply);
}
});
}
Khi tập lệnh chạy xong, tất cả các email trong thư mục nhãn này sẽ có thư trả lời nháp.
Cuối cùng, bạn cần xem lại chúng, tùy chỉnh cnếu cần và nhấn Gửi! ?
Hy vọng với bài viết này, bạn đã biết cách xử lý nhanh chóng hàng trăm email công việc mỗi ngày. Để biết thêm nhiều mẹo và thủ thuật tin học văn phòng hữu ích khác, hãy tham gia cùng với Gitiho ngay hôm nay.
Gitiho đã cho ra mắt khóa học Google Sheets từ Cơ bản đến Nâng cao, công cụ thay thế Excel giúp bạn hoàn toàn có thể tự tin phân tích và xử lý dữ liệu trên Google Sheet, lập bảng biểu, báo cáo trực quan và hơn thế nữa. Bấm vào để học thử ngay!