Mẫu html tập lệnh ứng dụng google
Bạn có thể gửi email HTML từ Google Apps Script. Ví dụ: giả sử bạn muốn gửi email từ Google Trang tính của mình khi một số sự kiện xảy ra. Bạn có thể gửi email bằng MailApp. sendEmail() chức năng như thế này Show
MailApp.sendEmail({ to: email, subject: "This is a test email", htmlBody: message }); trong đó thông báo là một chuỗi có nội dung HTML Một ví dụGiả sử bạn có một trang tính Google với danh sách các ứng cử viên Tạo một bản sao của Google Trang tính này. Bạn có thể xem toàn bộ mã trong bản sao của mình Bạn muốn hợp lý hóa quy trình phê duyệt. Ví dụ dưới đây sẽ chỉ cho bạn cách phê duyệt ứng viên khi nhấn nút menu. Sau đó, kịch bản sẽ tự động gửi email cho ứng viên chào đón họ Tạo một mục menu mới trong trang tính GoogleTạo một Google Trang tính trống mới. Đầu tiên, chúng ta hãy thêm một mục menu vào Google Sheet function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); } Quy trình là bạn sẽ chọn vào ứng viên rồi chọn mục menu Quy trình → Phê duyệt Sau khi nhập mã này vào trình chỉnh sửa tập lệnh (Trong trang tính google → Trình chỉnh sửa tập lệnh) thực hiện Tệp → Lưu rồi đóng và mở lại trang tính Google để mục menu mới (Quy trình) xuất hiện Chọn mục menu Xử lý → Phê duyệt. Google Trang tính sẽ yêu cầu quyền và phê duyệt để chạy tập lệnh. hoàn thành quá trình Nhận ứng viên được chọnBây giờ chúng ta cần lấy thông tin chi tiết của ứng viên hiện đang được chọn. Đây là mã cho điều đó function doApprove() { var cell = SpreadsheetApp.getActiveSheet().getActiveCell(); var row = cell.getRow(); var candidate = getCandidateFromRow(row); var ui = SpreadsheetApp.getUi(); var response = ui.alert('Approve '+candidate.name+'?', ui.ButtonSet.YES_NO); } function getCandidateFromRow(row) { var values = SpreadsheetApp.getActiveSheet().getRange(row, 1,row,3).getValues(); var rec = values[0]; var candidate = { first_name: rec[0], last_name : rec[1], email: rec[2] }; candidate.name = candidate.first_name+' '+candidate.last_name; return candidate; } Tạo một trang email HTMLTạo một tệp mới trong trình chỉnh sửa tập lệnh. Thực hiện Tệp → Mới. Sau đó chọn tệp HTML. Thực hiện File → Save rồi đặt tên là email ứng viên. html Dưới đây là nội dung của email ứng viên. html
Lưu ý rằng đây là một mẫu HTML. Nó sử dụng các biến như ứng cử viên. first_name và ứng cử viên. Tên Gửi emailMật mã function handleApproval(row, candidate) { var templ = HtmlService .createTemplateFromFile('candidate-email'); templ.candidate = candidate; var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: candidate.email, subject: "Your application is approved!", htmlBody: message }); SpreadsheetApp.getActiveSheet().getRange(row, 4).setValue('approved'); } Đầu tiên, chúng tôi tải mẫu HTML cho email. Sau đó gán đối tượng ứng viên cho một biến trong mẫu. Khi bạn gọi hàm đánh giá (), các biến trong mẫu được sử dụng để soạn email HTML. (Xem ứng viên. first_name trong mẫu HTML) Sau đó gửi email bằng MailApp. hàm sendEmail() Sau đó, chúng tôi cập nhật cột trạng thái của bảng tính thành “đã phê duyệt” Nếu bạn chạy Quy trình → phê duyệt ngay, nó sẽ gửi email cho ứng viên và cập nhật trạng thái thành “đã phê duyệt” Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách gửi email HTML từ Google Trang tính bằng Apps Script. Tôi cũng sẽ chỉ cho bạn cách tạo mẫu email HTML bằng Gmail và Google Docs Trong hướng dẫn trước, tôi đã mô tả cách xây dựng ứng dụng Stock Watcher để theo dõi giá cổ phiếu. Ứng dụng Stock Watcher gửi email vào mỗi buổi sáng với giá cập nhật cho các cổ phiếu mà bạn đang theo dõi. Email đó trông như thế này Hướng dẫn này sẽ dạy bạn cách làm cho email đó trông thật đẹp bằng cách sử dụng HTML. Không phải email dưới đây tốt hơn nhiều sao? Trong hướng dẫn này, tôi giả định rằng
Để gửi email HTML, trước tiên chúng ta cần tạo một mẫu email bằng HTML. Tôi sẽ chỉ cho bạn cách tạo một tài khoản bằng Google Trang tính, Tài liệu và Gmail Có 3 bước
Trước tiên, hãy bắt đầu soạn email trong Gmail. Sau đó, copy paste bảng chứa thông tin chứng khoán từ sheet vào nội dung email Gửi email cho chính bạn và xác nhận rằng có vẻ ổn Tạo các mẫu email HTML hoạt động trên nhiều ứng dụng email khác nhau như Gmail, Outlook và Hotmail, v.v. có thể là thử thách. Trong bài đăng này, tôi sẽ giả định rằng phần lớn người nhận email là người dùng Gmail. Nếu điều đó không đúng, bạn có thể thử gửi email ở trên tới một vài người nhận không phải Gmail để xác nhận rằng email trông ổn trong ứng dụng email của họ Từ menu ba chấm trong Gmail, chọn Hiển thị bản gốc Nhấn Copy to clipboard để sao chép nội dung thư và dán vào Google Doc ★ Bạn có biết Đây là một cách nhanh chóng để tạo một Google Doc mới. Mở địa chỉ https. // tài liệu. mới trên trình duyệt của bạn và nó sẽ tạo một Google Doc mới cho bạn Khi kết thúc bước này, bạn sẽ có một Google Tài liệu chứa thông báo email chi tiết, bao gồm cả văn bản và nội dung HTML của nó Tiếp theo, chúng tôi cần xóa tất cả nội dung không cần thiết khỏi tài liệu để bạn chỉ còn lại mã HTML Tìm kiếm function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }1 trong tài liệu. Bạn sẽ thấy mã HTML cho email ngay bên dưới nơi văn bản này xuất hiện trong tài liệu Xóa mọi thứ khác trong tài liệu ngoại trừ HTML này. Tôi đã đánh dấu mã HTML trong ảnh chụp màn hình bên dưới để giúp bạn định vị mã đó trong tài liệu của mình Bạn cũng cần xóa một dòng ở cuối (sau khi phần HTML kết thúc) Mã function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }2 ngay trước HTML cho ứng dụng email biết rằng nội dung HTML đã được mã hóa. Như mã gợi ý, hệ thống mã hóa được sử dụng là "có thể in được trích dẫn", thường được sử dụng để mã hóa email. Do đó, nội dung HTML phải được giải mã trước khi sử dụng Khi bạn hoàn tất, tài liệu của bạn chỉ nên chứa mã HTML được mã hóa cho email mà chính bạn đã gửi Bước tiếp theo là giải mã HTML bằng bộ giải mã có thể in được trích dẫn như ở đây. https. //www. webatic. com/quoted-printable-convertor
Ghi chú. bạn cần dán mã đã mã hóa vào ô bên dưới (không phải ô bên trên) Khi bạn hoàn tất việc thay thế HTML được mã hóa bằng HTML được giải mã, tài liệu của bạn sẽ trông như thế này Có thể khó theo dõi cấu trúc của HTML đã giải mã, vì vậy tôi khuyên bạn nên "làm đẹp" nó bằng cách sử dụng trình chỉnh sửa HTML như tại. https. //www. trình duyệt. com/tools/html-làm đẹp. Khi bạn làm đẹp nó, cấu trúc HTML sẽ dễ theo dõi hơn rất nhiều
Đó là nó. Bây giờ bạn đã có mã HTML mà bạn cần để tạo mẫu Tạo một tệp HTML mới có tên là Mẫu. html trong trình chỉnh sửa Apps Script. Chọn Tệp → Mới → Tệp HTML Nhập mẫu. html làm tên tệp Một tệp HTML sẽ được tạo với một số nội dung mặc định được điền trong đó Thay thế nội dung mặc định bằng mã HTML từ bước trước và lưu tệp Bạn đã hoàn tất việc tạo mẫu HTML. Bước tiếp theo là sử dụng Apps Script để gửi email HTML bằng mẫu mà bạn vừa tạo Thay vì bắt đầu từ đầu, chúng tôi sẽ sửa đổi tập lệnh từ hướng dẫn trước. Đây là tập lệnh mà chúng tôi sẽ sửa đổi (vui lòng xem hướng dẫn khác để biết giải thích về chức năng của mã này) ⚠ Vui lòng thay thế địa chỉ email youremail@example. com trong đoạn mã dưới đây với địa chỉ email của bạn function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; } Đoạn script trên gửi email giống như thế này Gửi một email HTML khá dễ dàng Trước tiên, hãy tạo một hàm mới có tên là function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }3 lấy giá cổ phiếu làm đầu vào và trả về phần thân HTML để sử dụng trong thông báo email Hàm function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }3 tạo một mẫu HTML bằng Mẫu. html và trả về nội dung của nó. Xin lưu ý rằng function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }5 là một đối tượng function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }2 Sau đó, chúng tôi sẽ sử dụng nội dung HTML này để gửi email HTML ⚠ Vui lòng thay thế địa chỉ email youremail@example. com trong đoạn mã dưới đây với địa chỉ email của bạn function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }3 Khi bạn chạy hàm function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }6, bạn sẽ nhận được một email HTML giống như bên dưới Chúng ta làm xong chưa? . Chỉ có một điều khác bạn cần làm để hoàn thành hướng dẫn này. Đoạn mã trên hoàn toàn không sử dụng thông tin giá cổ phiếu. Nghĩa là, hàm function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }3 không sử dụng function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }8 ở bất cứ đâu Chúng tôi cần bảng trong email HTML để sử dụng thông tin giá cổ phiếu đến từ trang tính. Để làm điều này, chúng ta cần cung cấp biến function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }8 cho mẫu. Điều đó sẽ cho phép chúng tôi tạo mẫu động bằng cách sử dụng dữ liệu này Câu lệnh function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }20 làm cho biến function sendEmail() { var stockData = getData(); var body = getEmailText(stockData); MailApp.sendEmail({ to: "[email protected]", subject: "Stock update", body: body }); } function getEmailText(stockData) { var text = ""; stockData.forEach(function(stock) { text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n"; }); return text; } /** * @OnlyCurrentDoc */ function getData() { var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues(); values.shift(); //remove headers var stocks = []; values.forEach(function(value) { var stock = {}; stock.name = value[0]; stock.ticker = value[1]; stock.price = value[2]; stocks.push(stock); }) //Logger.log(JSON.stringify(stocks)); return stocks; }8 có sẵn để sử dụng trong mẫu thông qua thuộc tính function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }22. Thuộc tính này có thể được sử dụng như một biến trong tập lệnh trong Mẫu. tệp html function doApprove() { var cell = SpreadsheetApp.getActiveSheet().getActiveCell(); var row = cell.getRow(); var candidate = getCandidateFromRow(row); var ui = SpreadsheetApp.getUi(); var response = ui.alert('Approve '+candidate.name+'?', ui.ButtonSet.YES_NO); } function getCandidateFromRow(row) { var values = SpreadsheetApp.getActiveSheet().getRange(row, 1,row,3).getValues(); var rec = values[0]; var candidate = { first_name: rec[0], last_name : rec[1], email: rec[2] }; candidate.name = candidate.first_name+' '+candidate.last_name; return candidate; }1 Bước tiếp theo là điền vào bảng trong email HTML bằng cách sử dụng nội dung của biến function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }22 mà chúng tôi đã cung cấp cho mẫu Đầu tiên, xóa mã HTML cho tất cả các hàng trong bảng trừ hàng tiêu đề và hàng đầu tiên. Mẫu HTML kết quả sẽ trông như thế này function doApprove() { var cell = SpreadsheetApp.getActiveSheet().getActiveCell(); var row = cell.getRow(); var candidate = getCandidateFromRow(row); var ui = SpreadsheetApp.getUi(); var response = ui.alert('Approve '+candidate.name+'?', ui.ButtonSet.YES_NO); } function getCandidateFromRow(row) { var values = SpreadsheetApp.getActiveSheet().getRange(row, 1,row,3).getValues(); var rec = values[0]; var candidate = { first_name: rec[0], last_name : rec[1], email: rec[2] }; candidate.name = candidate.first_name+' '+candidate.last_name; return candidate; }3 Khi bạn gửi email bằng mẫu này, email bạn nhận được sẽ chỉ có một hàng Tiếp theo, chúng ta sẽ sử dụng vòng lặp for để tự động tạo các hàng trong bảng HTML bằng cách sử dụng thông tin trong biến function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }22 Các ký tự function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }25 cho Apps Script biết rằng văn bản ở giữa chúng phải được đánh giá là mã. Chúng được gọi là scriptlet tiêu chuẩn function handleApproval(row, candidate) { var templ = HtmlService .createTemplateFromFile('candidate-email'); templ.candidate = candidate; var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: candidate.email, subject: "Your application is approved!", htmlBody: message }); SpreadsheetApp.getActiveSheet().getRange(row, 4).setValue('approved'); }1 function handleApproval(row, candidate) { var templ = HtmlService .createTemplateFromFile('candidate-email'); templ.candidate = candidate; var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: candidate.email, subject: "Your application is approved!", htmlBody: message }); SpreadsheetApp.getActiveSheet().getRange(row, 4).setValue('approved'); }2 function handleApproval(row, candidate) { var templ = HtmlService .createTemplateFromFile('candidate-email'); templ.candidate = candidate; var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: candidate.email, subject: "Your application is approved!", htmlBody: message }); SpreadsheetApp.getActiveSheet().getRange(row, 4).setValue('approved'); }3 function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Process') .addItem('Approve', 'doApprove') .addToUi(); } function doApprove() { SpreadsheetApp.getUi().alert("Approval process"); }34
|