Cách hợp nhất email trong Gmail dưới một nhãn với Apps Script trong Google sheets

Nội dung được viết bởi Bến Hà Trương

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:

  1. Đảm bảo tất cả các email được gắn nhãn chính xác trong Gmail (bạn có thể sử dụng bộ lọc để thực hiện việc này).
  2. Sau đó, sử dụng Apps Script để trích xuất các phản hồi giải pháp thành một Trang tính có tên và địa chỉ email.
  3. Phân loại mỗi hàng dữ liệu (tức là mỗi email) thành 3 hoặc 4 danh mục khác nhau, ví dụ: "Correct”, “Correct but…”
  4. Tiếp theo, tạo một mẫu trả lời cho từng danh mục này
  5. Sau đó, sử dụng công thức VLOOKUP đơn giản để thêm câu trả lời cho mỗi hàng, dựa trên danh mục.
  6. Tiếp đến, sử dụng Apps Script để tạo email nháp cho mọi người trong Trang tính (phần Kết hợp Thư trong Gmail).
  7. Cuối cùng là  kiểm tra (thủ công) nhanh email gốc và phản hồi, thêm bất kỳ tùy chỉnh nào và sau đó nhấn SEND.

Trích xuất email Gmail sang Google sheets với Apps Script

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

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

Tạo Mẫu phản hồi trong Google sheets

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.

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 

sử dụng hàm VLOOKUP  để thêm một trong các mẫu trả lời này vào mỗi hàng

Tạo thư trả lời nháp cho kết hợp thư trong Gmail

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! ?

Lưu ý về việc kết hợp thư trong Gmail

  1. Chúng ta có thể đã sử dụng phương pháp trả lời của dịch vụ GmailApp để tự động gửi trả lời và bỏ qua quá trình xem xét bản nháp. Điều này sẽ hữu ích nếu việc xem xét từng bản nháp quá tốn thời gian trên quy mô lớn.
  2. Chúng ta đã không bao gồm bất kỳ xử lý lỗi nào trong tập lệnh này. Điều này là có chủ ý bởi vì chúng tôi đang tạo ra một giải pháp sử dụng một lần để thực hiện nên chúng tôi muốn hoàn thiện càng nhanh càng tốt. Đây là một trong những điểm mạnh của Apps Script. Bạn có thể sử dụng nó để tạo ra các loại kết hợp nhanh chóng để lấp đầy những khoảng trống nhỏ trong quy trình làm việc của bạn. Nếu vấn đề đủ cụ thể và không có ý định sử dụng ở nơi khác, bạn không cần phải lo lắng quá nhiều về việc xử lý lỗi và các trường ngoại lệ.
  3. Cuối cùng, hãy lưu ý về hạn ngạch Apps Script khi gửi email tự động bằng Apps Script. Giới hạn 100 cho gói dành cho người tiêu dùng và 1.500 cho G Suite (Business và Education). 

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.

Google sheets - công cụ thay thế hoàn hảo cho Excel có lẽ đã quá quen thuộc với hầu hết chúng ta, đặc biệt là dân văn phòng. Nhưng bạn có biết, Google Sheets có khoảng 900 triệu người dùng, nhưng không phải ai cũng biết sử dụng thành thạo những tính năng hữu ích từ những cái cơ bản nhất.

Để giúp đỡ bạn trên hành trình chinh phục công cụ làm việc “quốc dân” này, 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 chỉ với 45 bài giảng và 9 giờ học, bạn đã hòan toàn có thể làm chủ công cụ này.

Giờ đây, 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. Và chắc chắn rằng, bạn sẽ được sếp và đồng nghiệp “yêu” hơn đấy!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông