見出し画像

[WIP] GASでTimeTree APIを触るサンプル

個人的にはGoogle Calendar(G Suiteだし)なんですが、家族がなぜかTimeTreeじゃないと予定管理してくれないので我が家ではTimeTreeを使っています。

さて、TimeTree APIはまだ一部不便なところもあって、自分が実現したい機能を実装するにはまだ少し足りない感じがしています。この記事では特に何かを実現するものとまではなっていませんのでWIPとさせていただきます。

TimeTree APIのパーソナルアクセストークンを発行する

とっととトークン(←言いたかっただけ)発行してとっととどっかにコピペ保存しましょう。1度発行するとその時しか表示されないので気をつけてください。

OAuthアプリケーションを作成する代わりにパーソナルアクセストークンを発行し、APIにリクエストすることもできます。

GASエディタで新しいスクリプト(プロジェクト)を作る

これは適時でお願いします。自分は以下のように timetree_sample としました。

スクリーンショット 2019-11-25 9.06.55

スクリプトプロパティにパーソナルアクセストークンを保存する

この要領でプロパティは timetree_personal_access_token で値は先ほど発行したパーソナルアクセストークンを保存しましょう。

スクリーンショット 2019-11-25 9.09.09

これで一通りGASでTimeTree APIを叩く準備が整いました。

参照系のサンプル

自分のユーザー情報を取得する例です。

// テスト用メソッド
function timtreeTest(){
 Logger.log(timetreeGetUser()); // ユーザー取得メソッドをコール
}

// ユーザー取得メソッド
function timetreeGetUser(){
 var url = 'https://timetreeapis.com/user';
 var method = 'GET';
 var payload = '';
 return timetreeAPI(url, method, payload); // TimeTree APIをコール
}

// TimeTree APIをコールするメソッド
function timetreeAPI(url, method, payload) {
 var accessToken = PropertiesService.getScriptProperties().getProperty('timetree_personal_access_token');
 var headers = {
   'Authorization': 'Bearer '+ accessToken
 };
 var options = {
   'method': method,
   'headers': headers,
   'payload': payload
 };
 
 var response = UrlFetchApp.fetch(url, options);
 return response;
}

処理としては以下のようになっています。

1. テスト用メソッド
2. ユーザー取得メソッド
3. TimeTree APIをコールするメソッド

レスポンス

表示→ログ から確認できます。

スクリーンショット 2019-11-25 9.19.31

こんな感じです。JSON形式で返ってきます。

スクリーンショット 2019-11-25 9.18.39

その他のAPIについて

参照系だけを試してみましたが、他にもいくつかあります。TimeTree APIはまだ少し未完成みたいでして、例えば「カレンダーの中のイベントIDの一覧を取得するAPI」がないです。将来実装される予定だそうですが、このAPIがないとちょっとまだ実用的な物が自分では組めないかな?と言う感じがしました。

GitHubにいくつか他のサンプルも置いてきます。何かのお役に立てれば幸いです。

まとめ

まだ用途が限定されるけど、APIが完成したらまた何か作りたいと思います。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

note.user.nickname || note.user.urlname

テモナ株式会社でSenior Developerをやっています。

サンキューなっ(CV:野沢雅子)
3
難治性喘息・脊柱管狭窄症(椎間板ヘルニア)・便意と戦う技術系おっさん。技術系はQiitaとかに書いてます。 https://qiita.com/tokifuji
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。