こんにちは。8月28日から3週間ほどインターンとしてお世話になっている、東京工科大学の有田です。
インターンではWebアプリケーションを制作し、GoogleカレンダーAPIをJavascriptで利用しました。その際、Googleワークスペースのサンプルコードを改良して実装したので、ここでは改良するためにサンプルコードがどのように動いているのか備忘録的にまとめようと思います。
サンプルコード元はこちらを参照してください。
それぞれの関数が何をやっているのか
関数gapiLoaded()
ここでは、クライアント情報を初期化しています。
関数initializeGapiClient()
ここでは、APIキーの設定とAPIのドキュメントを読み込んでいます。読み込みが終わるとgapiInitedがtrueになり、正常に動作したことがわかります。
関数gisLoaded()
ここではOAuth認証のクライアントIDと、ユーザーにカレンダーのどの権限を許可を求めるか決めるスコープを設定します。 設定が終わるとgisInitedがtrueになり、正常に動作したことがわかります。
関数maybeEnableButtons()
ここではAPIキーやOAuth認証がきちんと作動できているか確かめるため、先ほどのgapiInitedとgisInitedがtrueになっているか確認し、確認できたらボタンを表示します。ボタンを表示するかわりに別の処理をすることによって、サインインの方法を変えることができます。
関数handleAuthClick()
ここではサインインのボタンを押したときの処理をします。エラーが発生した場合はエラーを返し、それ以外の場合はサインインのボタンは更新ボタンに名称を変更し、ログアウトボタンを表示します。if (gapi.client.getToken() === null)から続くコードでは新しく通信が開始されたとき、アカウント選択画面などの画面を表示し、そうではない場合はアカウント選択画面などを表示しません。
関数handleSignoutClick()
ここではサインアウトのボタンを押したときの処理についての処理をします。Googleアカウントの連携情報やサインインサインアウトのリセットを行っています。
関数listUpcomingEvents()
ここでは、Googleカレンダーからどの情報をもってくるか決め出力します。カレンダーID(メインカレンダーはprimary)、加えるイベントの終了時間、削除済みの予定を表示するか、単独の予定を表示するかどうか、予定をいくつ表示するか、結果がどのような順番で表示されるかをそれぞれ設定しています。もっと追加するなどしたい場合は、GoogleワークスペースのEvents: listを参照しましょう。その後、例外処理でエラーを表示できるようにし、イベントを設定していないときの表示をしています。最後に、変数outputにGoogleカレンダーAPIから取得した情報を入れ、出力します。
おわりに
今回はインターンで使用したGoogleカレンダーAPIのサンプルコードのそれぞれの意味についてまとめました。GoogleカレンダーAPIのサンプルコードで詰まってしまった人の助けになれば幸いです。