Đặt vấn đề

Một ngày đẹp trời gồm một người chúng ta gọi đến mình, không vội nghe máy mình nghĩ về trong đầu lâu ngày call như này hình dáng gì cũng có thể có việc nó nhờ vào mình. Thường thì nó gọi thì chỉ hoàn toàn có thể một là nhờ support mua điện thoại, 2 là nhờ download lại win trang bị tính. Chả gọi sao cứ làm cho nghề này là cứ bị auto nhờ sửa sản phẩm với cài win nhỉ?

*

Giờ ta demo viết 1 đoạn mã lệnh cơ bạn dạng để làm việc với Google Sheets coi nhé. Lấy ví dụ viết 1 đoạn mã để khi ban đầu mở file thì auto thêm 1 dòng menu chẳng hạn. =)) Đầu tiên nhằm viết mã cho file Google Sheets này ta vào chính sách => Trình chỉnh sửa tập lệnh. Mở ra giao diện nhằm soạn code. Ta biên soạn code như sau:

function onOpen(e) { // địa chỉ a custom menu to the spreadsheet. SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp. .createMenu("Custom Menu") .addItem("First item", "menuItem1") .addToUi();Chạy lên ta có kết quả menu như sau:

*
Hoặc thử 1 đoạn code khác. Set background màu vàng với kiểu chữ nghiêng đến ô Tổng hóa đơn:

function onOpen(e) // add a custom menu to lớn the spreadsheet. Var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()<0>; var cell = sheet.getRange("A12:E12"); cell.setFontStyle("italic"); cell.setBackground("yellow");Kết quả:

*

Note: Hàm onOpen là một trong trigger của Apps Script dành cho Sheets. Code trong hàm này sẽ tự động chạy khi chúng ta mở file Google Sheets. Để xem thêm về những trigger vào Apps Script mời bạn xem tại đây https://developers.google.com/apps-script/guides/triggers/

Xong Helloworld, trở lại bài toán ban đầu. Sau vượt trình nghiên cứu và phân tích tìm cách giải quyết và xử lý mình đã kiếm được một phép tắc đắc lực trong Apps Script giúp bọn họ giải quyết vấn đề đó là Time-driven triggers. Đơn giản Time-driven triggers giống hệt như Cron-job vào Unix. Time-driven triggers chất nhận được các tập lệnh được kích hoạt trong 1 thời điểm cụ thể hoặc vào một khoảng thời hạn định kì, tiếp tục như mỗi phút hoặc không liên tục mỗi tháng 1 lần. Thời gian có thể được ngẫu nhiên một chút - ví dụ: nếu như bạn tạo trình kích hoạt 9h sáng định kỳ, Apps Script chọn thời gian từ 9h sáng mang đến 10 giờ sáng, kế tiếp giữ thời gian đó đồng bộ từ ngày nay sang ngày khác nhằm 24 giờ trôi qua trước khi kích hoạt lại.

Ví dụ cơ bạn dạng về Time-driven trigger:

function createTimeDrivenTriggers() // Trigger every 6 hours. ScriptApp.newTrigger("myFunction") .timeBased() .everyHours(6) .create();Code này đã kích hoạt hàm myFunction mỗi 6 giờ đồng hồ một lần.

Như vậy ta vẫn có cách thức giải quyết bài xích toán: tiến hành hẹn tiếng định kì từng ngày 1 lần sẽ tự động hóa tải file backup với gửi về email. Mình sẽ dự tính làm nó như sau:

Tạo 1 custom menu là "Hẹn giờ gửi email"Mở ra 1 popup được cho phép nhập mail vào bên cạnh đó hiển thị trạng thái hiện tại có đang được kích hoạt hay khôngCó button để cho phép Hẹn tiếng hoặc hủy hứa giờ theo yêu cầu

Hiện thực hóa nó thôi:

Đầu tiên ta thêm 1 file Page.html để triển khai cái popup như trên:

function onOpen(e) // showroom a custom menu lớn the spreadsheet. SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp. .createMenu("Hẹn giờ giữ hộ email") .addItem("Cài đặt", "showDialog") .addToUi(); function showDialog() var html = HtmlService.createTemplateFromFile("Page"); var myData = PropertiesService.getUserProperties(); Logger.log(myData.getProperties()); var status = myData.getProperty("status"); html.yourEmail = Session.getActiveUser().getEmail(); html.status = parseInt(status); var htmlOutput = html.evaluate() .setWidth(500) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(htmlOutput, "Cài đặt hẹn giờ giữ hộ email");function sendEmail() var sheet = SpreadsheetApp.getActive(); var fileName = sheet.getName(); var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + sheet.getId() + "&exportFormat=xlsx"; var params = method : "get", headers : "Authorization": "Bearer " + ScriptApp.getOAuthToken(), muteHttpExceptions: true ; var blob = UrlFetchApp.fetch(url, params).getBlob(); blob.setName(sheet.getName() + "_" + Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yyyy HH:mm") + ".xlsx"); // Send email var myData = PropertiesService.getUserProperties(); var e-mail = myData.getProperty("email"); var subject = "Gửi file " + fileName + " tự động"; var message = "File thêm kèm bên dưới"; MailApp.sendEmail(email, subject, message, attachments: );function setting(email) var myData = PropertiesService.getUserProperties(); var status = myData.getProperty("status"); status = 1; myData.setProperty("status", status); myData.setProperty("email", email); deleteTrigger(); ScriptApp.newTrigger("sendEmail") .timeBased() .atHour(23) .everyDays(1) .create(); SpreadsheetApp.getUi().alert("Cài để hẹn giờ giữ hộ mail thành công");function clearSetting() var myData = PropertiesService.getUserProperties(); var status = myData.getProperty("status"); status = 0; myData.setProperty("status", status); deleteTrigger(); SpreadsheetApp.getUi().alert("Hủy hứa hẹn giờ gửi mail thành công");function deleteTrigger() // Loop over all triggers. Var triggers = ScriptApp.getProjectTriggers(); for (var i = 0; i triggers.length; i++) ScriptApp.deleteTrigger(triggers); Giải thích một chút về đoạn code trên:

Khi click vào menu setup thì sẽ sử dụng hàm showDialog để mở popup thiết lập đặtKhi click hứa giờ thì ta vẫn chạy hàm setting để chuyển đổi trạng thái của thiết đặt hẹn giờ đồng hồ đồng thời đang kích hoạt trigger sendEmail và thực hiện nó định kì từng ngày 1 lần vào khoảng 23hĐể cài đặt file Google Sheets xuống ta dùng service UrlFetchApp

Giờ test xem kết quả đó thôi nào:

*

Thử click hứa giờ và chờ đợi điều kì diệu xảy ra. Mà để đợi mang đến đêm thì quá lâu chỉnh sửa lại code mang lại chạy từng phút 1 lần để nhìn thấy luôn thành trái =))

*

*

Ngon rồi bằng hữu ạ. Cố máy điện thoại tư vấn ngay cho đứa bạn để đòi nó 1 bữa beer thôi.

*

Kết bài

Dựa vào bài xích toán đặt ra ta bắt đầu thấy Google Apps Script có thể mở rộng ra nhiều bài toán hơn ví như Hẹn giờ giữ hộ mail cho 1 danh sách người tiêu dùng trong 1 sheet...vv bạn hãy thử đặt ra 1 câu hỏi và giải quyết và xử lý nó bằng Google Apps Script xem sao nhé. Dường như không chỉ Google Sheets mà Google Apps Script còn hỗ trợ chúng ta trong toàn bộ các vận dụng nằm trong hệ sinh thái Google: Calendar, Docs, Drive, Gmail, Sheets, và Slides. Vì chưng vậy nếu như bạn có 1 yêu cầu quan trọng đặc biệt nào kia với những dịch vụ Google thì hãy tìm về Google Apps Script.


Bạn đang xem: Hẹn giờ gửi email trong google bảng tính


Xem thêm: Đánh Giá - Những Hình Ảnh Về Chiến Dịch Điện Biên Phủ

Cảm ơn các bạn đã theo dõi bài bác viết. (bow)