Giap Hiep

I'm Giap Hiep

I'm a web developer, a gymer. I enjoy share something i know that help people's work!
Giap Hiep

Tạo cronjob gửi mail, gửi message lên chatwork chỉ với vài dòng code script trên Google Apps Scrip

Chào mọi người, bài viết này mình xin chia sẻ về cách tạo cronjob đơn giản trên google apps script.
Nếu bạn đang cần tạo cronjob hàng ngày gửi mail đòi nợ, hay hàng ngày gửi message lên chatwork nhắc nhở viết báo cáo mà bạn chưa có server hoặc không có server thì bài viết này sẽ giúp bạn giải quyết vấn đề đó... à google script còn làm được nhiều thứ hay ho lắm phần này mình chỉ giới thiệu vậy thôi, các bạn tự tìm hiểu thêm nhé.

Giới thiệu Google Apps Script

Google App Script là ngôn ngữ lập trình dựa trên JavaScript cho phép bạn tạo, sửa đổi và triển khai các dự án trên trình biên tập Apps Script, mã Apps Script chạy trên máy chủ của Google. Bạn có thể lập trình để thao tác, can thiệp đến rất nhiều các dịch vụ của Google như google sheet, clendar, maps, form, drive ... nói chung là hầu hết các dịch vụ của google.<br>
Mội vài ví dụ bạn có thể làm với google apps script<br>

  • Với goole form: có thể viết mã để khi có người submit form thì sẽ gửi dữ liệu đến api server của bạn.
  • Google sheet: ghi và đọc dữ liệu từ google sheet, lấy dữ liệu từ google sheet để gửi mail
  • Google calendar: đọc dữ liệu lịch biểu từ file của bạn để tạo sự kiện trên google calender<br>
    ...<br>
    Còn làm được rất rất nhiều thứ khác, còn nay mình sẽ hướng dẫn tạo cronjob gửi mail và gửi message lên chartwork.

Cronjob gửi mail

1. Để sử dụng google script thì bạn cần có tài khoản google ( cái này chắc ai cũng có rồi ) <br>
2. Truy cập vào script.google.com để mở trình soạn thảo code <br>
3. Chọn + dự án mới để viết code <br>
<br>
4. Để gửi mail thì bạn sử dụng đoạn code sau <br>

    function myFunction() {
      var subject = 'Hello viblo.asia';
      var body = 'Xin chào viblo.asia, Bài viết này thuộc về trang web viblo.asia';
      var mailTo = 'nguyen.van.thinhb@sun-asterisk.com'
      GmailApp.sendEmail(mailTo, subject, body);
}


<br>
Đọc qua chắc các bạn cũng hiểu đoạn code này rồi, code này sẽ sử dụng chính email mà bạn đăng nhập vào app để gửi mail cho mailTo <br>
5. Click vào nút :arrow_forward: để chạy thử <br>
<br>
Bạn cần cấp quyền cho script này <br>
<br>
Chọn xem xét các quyền<br>
<br>
Chọn nâng cao<br>
<br>
Chọn đi tới dự án ... (không an toàn)<br>
<br>
Và click vào cho phép để cấp các quyền với email.<br>
Vậy là xong phần gửi mail thử, 1 mail đã được gửi đến người nhận.<br>
6. Tạo triggers để chạy cronjob <br>
<br>
Tại mục chỉnh sửa chon kịch hoạt dự án hiện tại<br>
<br>
Chọn mục Thêm trình kích hoạt ở góc dưới bên phải màn hình.<br>
<br>
Modal setting hiện ra và bạn cài đặt các thông số nhé, như trên là mình cài cho code script chạy khoảng nửa đêm đến 1 giờ sáng đó.<br>
Vậy là đã tạo cronjob gửi mail xong rồi ezz nhỉ

Cronjob message lên chatwork

Mình cần tạo cronjob send message lên chatword lúc 5h chiều để nhắc nhở viết report cuối ngày. Việc này khá đơn giản làm như phần conjob gửi mail ở trên và thay bằng đoạn code sau

   function myFunction() {
      var token = 'your_bot_chatwork_token';
      var roomId = 'your_room_id';
      var message = 'Viết report cuối ngày đi';

      var params = {
        'method' : 'post',
        'headers' : {
          'X-ChatWorkToken' : token
        },
        'payload' : {
          'body' : message
        }
      };

      UrlFetchApp.fetch("https://api.chatwork.com/v2/rooms/" + roomId + "/messages", params);
}

Chúng ta cần your_bot_chatwork_token là token của bot mà bạn dùng để gửi message
bạn vào chatwork bằng tài khoản của bot để lấy token tại đây <br>
Với room_id thì bạn vào box chat mà bạn muốn gửi tin nhắn lên đó để lấy trên url nhé, nó là 1 chuỗi số sau chữ id.
<br>
Sửa code rồi làm giống phần send mail là xong rồi.
Cảm ơn mn đã theo dõi.