Tạo Event trong Google Calendar sử dụng javascript

Ngày nay các dịch vụ của Google ngày càng trở nên phổ biến và không thể thiếu được trong cuộc sống như search, drive, maps,.... Trong bài viết này, chúng ta sẽ tìm hiểu cách để insert một event vào google calendar sử dụng javascript.

Step 1: Khởi động Google Calendar API

a. Sử dụng this wizard để tạo hoặc chọn project trong Google Developers Console và tự động bật API. Click Continue, sau đó Go to credentials.
b. Tại trang Add credentials to your project, click Cancel button.
c. Trên đầu của trang, chọn the OAuth consent screen tab.Chọn Email address và nhập Product name (nếu có) rồi click Save button.
d. Chọn Credentials tab, click chọn Create credentials button và chọn OAuth client ID.
e. Trong mục application type, chọn Web application.
f. Trong ô Authorized JavaScript origins, nhập URL mà trang web của bạn sẽ chuyển hướng đến sau khi xác thực người dùng. Ví dụ ở đây là http://localhost:3000

g. Chọn Create
h. Ở màn hình Credentials, chọn Create Credentials và tạo API KEY.
i. Ở mục Library, tìm và chọn Calendar API để khởi động Google Calendar API.
k. Cuối cùng khi khởi tạo các bước xong, ta có OAuth 2.0 client IDs key và API key.

Step 2: Tạo event

Tạo file html và load handleClientLoad() trong javascript

.submit-btn
  = button_tag "#", target: :blank, class: 'add-calendar--js' do
    span
      | Add Event to Google Calendar
  .signin-gg-btn[style="display: none;"]
    | You not sign in. Please sign in with Google Acount! 

script src="https://apis.google.com/js/api.js" defer="defer" onload="this.onload=function(){};handleClientLoad()" onreadystatechange=("if (this.readyState === 'complete') this.onload()")

Thêm API_KEYCLIENT_KEY đã tạo ở bước trên

javascript:
  var CLIENT_ID = "164331371037-ik2i5um4r6vgd59ulf84qvt1l05n02md.apps.googleusercontent.com"
  var API_KEY = "AIzaSyAVflkQp716QB-Mrgq1-N5npCgFyX09Jcs"
  var DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest"];
  var SCOPES = "https://www.googleapis.com/auth/calendar";

Khởi tạo client và update trạng thái đăng nhập hiện tại

  function handleClientLoad() {
    gapi.load('client:auth2', initClient);
  }

  //Khởi tạo người dùng và update trạng thái đăng nhập hiện tại
  function initClient() {
    gapi.client.init({
      apiKey: API_KEY,
      discoveryDocs: DISCOVERY_DOCS,
      clientId: CLIENT_ID,
      scope: SCOPES
    }).then(function () {
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
    });
  }

Nếu trạng thái hiện tại là đã đăng nhập sẽ tạo event, nếu không sẽ hiện cửa sổ đăng nhập với google acount

 function updateSigninStatus(isSignedIn) {
    if (isSignedIn) {
      $('.content-gg-event').css("display", "block");
      $('.signin-gg-btn').css("display", "none");
      $('.add-calendar--js').on('click', function(){
        //tạo event test thử
        var event = {
          "summary": "Test Sumary", "description": "Test Description", "start": {"dateTime": "2017-08-30T15:10:00+07:00",}, "end": {"dateTime": "2017-08-30T15:15:00+07:00"}
        };
        creatEvent();
        function creatEvent(){
          //insert event to google calendar
          var request = gapi.client.calendar.events.insert({
            'calendarId': 'primary',
            'resource': event
          });
          request.execute(function(event) {
            window.open(event.htmlLink);  
          });
        }
      });
    } else {
      //nếu user chưa đăng nhập yêu cầu đăng nhập
      $('.content-gg-event').css("display", "none");
      $('.signin-gg-btn').css("display", "block");
      var isSignedIn = gapi.auth2.getAuthInstance().isSignedIn.get();
      gapi.auth2.getAuthInstance().signIn();
    }
  }

Step 3: Kết quả thực hiện

Nếu chưa đăng nhập thì hiển thị của sổ yêu cầu đăng nhập

Sau khi đăng nhập thành công, hiển thị button để add event to calendar

Add event to Google calendar

Chỉ với 3 bước trên ta có thể tạo event trong google calendar bằng javascript.
Ngoài ra chúng ta cũng có thể tạo event trong google calendar thông qua chèn link dạng: https://www.google.com/calendar/render?action=TEMPLATE&text=Test+Sumary&dates=20170830T030000Z/20170830T081500Z& details=Test+Description&location=&sf=true&output=xml với các params là text, dates(thời gian bắt đầu/thời gian kết thúc), details, location. Với cách trên ta có thể sử dụng để add event to google calendar một cách nhanh chóng nhưng với các chức năng sử dụng api của google thì nên oauthenticate với google để sử dụng các dịch vụ khác của google.

Để tìm hiểu thêm thông tin ta có thể tham khảo tại đây.