Wordpress

Gửi 100 Email Marketing siêu tiết kiệm với Google Sheet

Google Script là một công cụ mạnh mẽ mà bạn có thể sử dụng để tự động hóa các công cụ để tăng hiệu quả làm việc khác của Google như Sheets và Docs. Hôm nay mình sẽ hướng dẫn bạn sử dụng Google Sheets và Script để tạo ra một công cụ gửi Email Marketing mạnh mẽ và đặc biệt là 100% miễn phí, 100% email sẽ vào mail inbox.

Chỉ với một chút nỗ lực tìm hiểu cùng hướng dẫn này, bạn sẽ không bao giờ phải ngồi hàng giờ để gửi email cho khách hàng theo cách thủ công nữa. Hãy để Google Script hoạt động như trợ lý cá nhân của riêng bạn, thực hiện tất cả công việc cho bạn.

Thiết lập Google Sheets để gửi email

Cơ chế hoạt động mà bạn hiểu đơn giản như sau, chúng ta có một file trang tính (Google Sheet) được thiết lập sẵn các đoạn mã code trong Google Script để tạo chức năng lấy thông tin và gửi. Trang tính này sẽ lấy Email nháp mới nhất của bạn và sử dụng thông tin từ các trường bạn cung cấp sẵn trong trang tính để điều chỉnh thông tin được thiết lập cũng như gửi email theo tên, mail đó. Dưới đây, chúng ta sẽ từng bước tìm hiểu cách thiết lập hoàn chỉnh.

Bước đầu tiên, bạn tạo một trang tính mới, trong trang tính này bạn tạo các trường nội dung bao gồm First name,  Last name, Email, Status (tùy vào nhu cầu nhé, nhưng cơ bản thì các trường này là đủ rồi, bạn nào có nhu cầu cao hơn thì tìm hiểu thêm).

gui email marketing bang google sheet

Mình sẽ nói sơ qua về các trường này dùng để làm gì trước khi đi tiếp đến bước tiếp theo. Thì 3 trường First name, Last name, Email là 3 trường mà chương trình sẽ lấy thông tin này để điền vào thư nháp của bạn để gửi theo danh sách bạn thiết lập. Thông thường First name bạn sẽ sử dụng để xưng anh/chị gì đó, còn Last name bạn sẽ dùng để xưng tên khách hàng, trường Email là địa chỉ mail người nhận tương ứng. Với 3 trường này, bạn sẽ nhập thông tin vào, với trường Status thì bạn sẽ không nhập gì ở đây nhé, trường này là trường sẽ trả lại thông báo nếu email đã gửi thành công. Bây giờ, chúng ta cùng đi đến bước tiếp theo nào.

Bước tiếp đến, trong trang tính vừa tạo ở trên bạn tạo một đoạn code trong trình Google Script, bạn đến menu Công cụ >> Trình chỉnh sửa tệp lệnh. Trình chỉnh sửa tệp lệnh là nơi để bạn lưu trữ các functions phục vụ cho chức năng gửi email này.

Đoạn code mình sẽ để ở dưới bạn chỉ cần copy và dán vào để sử dụng. Bạn nào muốn nếu hiểu về lập trình có thể hiểu ngay các dòng mã code này và rất dễ để tùy biến thêm. Mình cũng sẽ nói sơ qua chức năng của các dòng code ở phần phía dưới bạn có thể xem thêm.

Sau khi lưu đoạn mã code này lại trong trình chỉnh sửa tệp lệnh, bạn khởi chạy đoạn mã trong này để cấp quyền truy cập vào tài khoản Gmail của bạn. Dù nằm trong Google Scripts và Google trang tính của Google tuy nhiên, đoạn mã code riêng mà chúng ta thêm vào nó giống như một ứng dụng bên thứ ba do đó cần sự cho phép mới có thể sử dụng.

Sau khi chạy đoạn mã code lần đầu bạn sẽ thấy xuất hiện trên menu trang tính này một menu và 1 nút mới. Đây là nút bạn dùng để chạy dòng lệnh gửi mail sau khi đã cung cấp danh sách cần gửi.

gui email marketing bang google sheet 2

Đây là đoạn code bạn cần thêm vào.

var EMAIL_SEND_SUCCESS = "EMAIL SEND SUCCESS";
function onOpen () {
var ui = SpreadsheetApp.getUi()
ui.createMenu('Gmail Auto')
.addItem('Bắt đầu gửi Mail', 'main')
.addToUi()
}

function getColumnHeadings (sheet) {
var headerRange = sheet.getRange(1, 1, 1, sheet.getMaxColumns())
var rawHeader = headerRange.getValues()
var header = rawHeader[0]
var columns = {}

for (var i in header) {
if (header[i].trim() !== '') columns[header[i]] = i
}

return columns
}

function getLatestDraft () {
var drafts = GmailApp.getDraftMessages()
if (drafts.length === 0) return null
else return drafts[0]
}

function main () {
var quota = MailApp.getRemainingDailyQuota()
var ui = SpreadsheetApp.getUi()
var sheet = SpreadsheetApp.getActiveSheet(); // Use data from the active sheet
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow() - 1; // Number of rows to process
var lastColumn = sheet.getLastColumn(); // Last column
var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // Fetch the data range of the active sheet
var data = dataRange.getValues(); // Fetch values for each row in the range
ui.alert('Your remaining daily email quota: ' + quota)

if (quota === 0) {
ui.alert('You can not send more emails')
return
}

var labelRegex = /{{[\w\s\d]+}}/g
var sheet = SpreadsheetApp.getActiveSheet()

var draft = getLatestDraft()

if (draft === null) {
ui.alert('No email draft found in your Google account. First draft an email.')
return
}

var subject = draft.getSubject()
var htmlBodyRaw = draft.getBody()
var plainBodyRaw = draft.getPlainBody()
var emailPlaceHolder = draft.getTo()

var response = ui.alert('Do you want to send drafted message titled "' + subject + '" to ' + (sheet.getLastRow() - 1) + ' people?', ui.ButtonSet.YES_NO)

if (response === ui.Button.NO) {
ui.alert('Stopped')
return
}

var count = 0
var emailMap = {}

var columns = getColumnHeadings(sheet)
var dataRange = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn())
var data = dataRange.getValues()

for (var i = 0; i < data.length; ++i) {
var row = data[i];
// Assign each row a variable
var FirstName = row[0]; // Col A: First name
var LastName = row[1]; // Col B: Last name
var Email = row[2]; // Col C: Client email

var emailStatus = row[lastColumn - 1]; // Col G: Email Status
var waiver = DriveApp.getFileById("1xPO9viWoy9hwLHZhz5KWu8CFiYtaHqBN");
var liabilityWaiver = waiver.getAs(MimeType.PDF);
if (emailStatus != EMAIL_SEND_SUCCESS) {
if (Email !== '' && !emailMap[Email]) {
var htmlBody = htmlBodyRaw.replace(labelRegex, function (k) {
var label = k.substring(2, k.length - 2)
Logger.log('Replaced ' + k + ' with ' + row[columns[label]])
return row[columns[label]]
})

var plainBody = plainBodyRaw.replace(labelRegex, function (k) {
var label = k.substring(2, k.length - 2)
return row[columns[label]]
})
MailApp.sendEmail(Email, subject, plainBody,{htmlBody: htmlBody});
sheet.getRange(startRow + i, lastColumn).setValue(EMAIL_SEND_SUCCESS);
SpreadsheetApp.flush();
count++

}
}
}
ui.alert(count + ' emails sent.')
}
HTML

Mình sẽ giải thích một chút về những dòng code này. Dòng đầu tiên, bạn sẽ khai báo một biến chứa thông báo khi email được gửi thành công.

var EMAIL_SEND_SUCCESS = "EMAIL SEND SUCCESS";
HTML

Tiếp đến function đầu tiên là function thêm vào menu trang tính một nút bấm, sau này bạn sẽ sử dụng chạy chương trình.

function onOpen () {
var ui = SpreadsheetApp.getUi()
ui.createMenu('Gmail Auto')
.addItem('Bắt đầu gửi Mail', 'main')
.addToUi()
}
HTML

Functions tiếp theo sẽ tạo các biến dùng để đếm,vòng lặp để đọc trang tính.

function getColumnHeadings (sheet) {
var headerRange = sheet.getRange(1, 1, 1, sheet.getMaxColumns())
var rawHeader = headerRange.getValues()
var header = rawHeader[0]
var columns = {}
for (var i in header) {
if (header[i].trim() !== '') columns[header[i]] = i
}
return columns
}
HTML

Functions tiếp theo là functions đọc thư nháp trong Gmail của bạn

function getLatestDraft () {
var drafts = GmailApp.getDraftMessages()
if (drafts.length === 0) return null
else return drafts[0]
}
HTML

Functions cuối cùng là function chính để chạy. Trong này bạn sẽ lưu ý một số đoạn code dưới đây.

for (var i = 0; i < data.length; ++i) {
var row = data[i];
// Assign each row a variable
var FirstName = row[0]; // Col A: First name
var LastName = row[1]; // Col B: Last name
var Email = row[2]; // Col C: Client email
var emailStatus = row[lastColumn - 1]; // Col G: Email Status
var waiver = DriveApp.getFileById("1xPO9viWoy9hwLHZhz5KWu8CFiYtaHqBN");
var liabilityWaiver = waiver.getAs(MimeType.PDF);
HTML

Trong vòng lặp này là các biến được sử dụng trong mail để điền thông tin trong các trường của google sheet. Ví dụ trong mail đã soạn sẵn, bạn sử dụng: Chào {{FirstName}} {{LastName}}, thì khi chương trình chạy đến đây nó sẽ nhận ra FirstName là dùng nội dung cột A (First name) hay LastName là dùng nội dung cột B (Last name) tương ứng.

Ưu nhược điểm của việc gửi email tự động qua Google Sheet

Công cụ nào rồi cũng sẽ có ưu nhược điểm của nó cả, cũng như nó còn phụ thuộc vào việc bạn sử dụng nó vào mục đích gì, tùy biến nó ra sao. Dưới đây là các ưu nhược điểm mà bạn có thể tham khảo để có thể khắc phục hay tận dụng hiệu quả hơn công cụ này nhé!

Ưu điểm

  • Tất nhiên miễn phí là ưu điểm đầu tiên
  • Có thể mở rộng với các bạn am hiểu về lập trình
  • Email được gửi sẽ gửi thẳng vào hộp thư đến (không vào hộp thư quảng cáo như các phần mềm khác).
  • Email có thể được tùy biến nội dung để phù hợp hơn cho từng khách hàng, dễ dàng gây thiện cảm hơn cho người nhận
  • Chờ bạn comment

Nhược điểm

  • Chỉ gửi được 100 mail/ngày
  • Khá rối nếu bạn không chịu test và mày mò, dễ nhầm lẫn vì chương trình sử dụng mail nháp mới nhất. Bạn nên lưu ý kiểm tra lại mail nháp trước mỗi lần gửi.
  • Chỉ sử dụng được cho Gmail

Chúng tôi hy vọng với bài viết này đã có thể giúp ích hơn cho bạn trong quá trình tìm hiểu về Digital Marketing. Và nếu có bất cứ thắc mắc hay góp ý nào bạn có thể để lại bình luận cho chúng tôi nhé!

Post Comment

Công nghệ máy tính, điện thoại, internet và game đã trở thành một phần không thể thiếu trong công việc & đời sống, đặc biệt là giới trẻ. Những thủ thuật máy tính, tin học, mẹo vặt đời sống, thiết kế web cơ bản và nâng cao từ trang thiên long truyền kỳ chẳng hạn như ten tieng han hay, share acc cf vip mien phi chắc chắn những kỹ thuật này sẽ hỗ trợ rất nhiều trong cuộc sống, học tập và công việc của bạn từ những bài viết mang tính trãi nghiệm và ứng dụng thực tế.

Following us on:
DMCA.com Protection Status