TeamGantのWEBAPIを利用する手順(python使用)


TeamGantとは

  • TeamGantは、その名のとおりチームメンバーでガントチャートを共有できるサービスです。
  • タスク管理等もできます
  • ブラウザで利用できます。専用のスマホアプリもあるようです。

今回紹介すること

  • TeamGantのWEB APIを利用するための手順を紹介します。
  • Pythonを使用した例を紹介します。
  • 今回は 基本的なアクセス方法の紹介のみ とします。

何ができるようになるの?

  • 日々の進捗チェックをブラウザ操作でポチポチらずにスクリプト化できます。

はじめ方

  1. まず、TeamGantのアカウントを作ります。(Free版もあり)
  2. プロジェクトを立てて工程を作る
  3. ベアラートークン を発行
  4. ユーザートークンAPIキー をゲット
  5. APIリファレンスのページでコマンド単体のテストをします
  6. Pythonでコーディングします。

※今回はWEB API の説明なので、 3.ベアラートークンの発行 から説明します。

ベアラートークンの発行方法

  1. TeamGantのApp Tokensのページに行きます。
  2. New App Name に適当な名前を入力して Save を押す。
  3. Token のとこにトークン(長い文字列)が返ってくるので、コピーする。

ユーザートークン と APIキー の発行

  • TeamGantのAPIドキュメントページへ行く。
  • 「Authentication」⇒「Create Session」の順にポチる。 * 右側にAPIを試せるウインドウがあるので、ベアラートークン(デフォルトだと"Bearer ABC123" って入力されている)に先ほど取得したベアラートークンを入力する。


※ ベアラートークンの先頭は、"Bearer "が必要なので注意!(スペース1文字入ります)

  • Body タブを押して、userとpass を自分のものに書き換えます。

  • Call Resource ボタンを押す

成功すると Response が 200番台になります。 400番台の場合はエラーなので設定を見直してください。

Response Body のところに api_key と user_token の文字列が返ってきていますので、これをメモっておきます。

APIリファレンスページでの練習

APIリファレンスのページにAPIのテストができます。タスクに関するAPIの GetList を例として、自分の当日のタスクリストを取得する手順を紹介します。

コマンド選択

左側の見出しから TaskTasks を選択し、 Get List を押します。
右側のウインドウが /tasks?today コマンドを試す状態になります。

次に ベアラートークン,ユーザートークン,APIキー をURLヘッダに付加します。

Headers を押して、Add new header を押すとアイテム名と値が入力可能になります。

アイテム 入力するアイテム名 入力する値の説明
ベアラートークン TG-Authorization 取得したベアラートークンの先頭に"Bearer "を付加
APIキー TG-Api-Key Create Sessionで取得したAPIキー
ユーザートークン TG-User-Token Create Sessionで取得したユーザートークン

上記3つをHeaderに設定した状態が↓のような画面になります。
Call Resource を押して Response 200番台が返ってくれば、OKです。

以上の手順でAPIドキュメントにあるAPIをブラウザ上でトライできます。

APIヘッダはピン止めができます!
入力ボックスの右側にマウスカーソルを持っていくとピン止めができます。
ピン止めしておくと、APIコマンドを変えたときに毎回ヘッダを入力しなくてもOKになり楽です。

Pythonを使用した例

TeamGantのAPIドキュメントにもPythonのExampleは載っています。
私が試した例を紹介します。

  • WEB_APIのアクセスはurllib を使用しています。
  • 受け取ったレスポンスはjsonライブラリを利用してJSONにして解釈し辞書型にします。
  • GETしたjsonをファイルに書き出しています。

# -*- coding: utf-8 -*-
import urllib.request
import codecs
import json
########################################################################
# TeamGant
########################################################################
class TeamGant():
    '''
    コンストラクタ
    '''
    def __init__(self):
        self.APIheader={'TG-Authorization':'Bearer <自身のベアラートークン>'
                       ,'TG-Api-Key'      :'<自身のAPIキー>'
                       ,'TG-User-Token'   :'<自身のユーザートークン>'
                       }
        self.UrlBase = 'https://api.teamgantt.com/v1/'
    '''
    TeamGantにリクエストを投げて
        引数 ApiCmd    :APIコマンド(必須)
        引数 iSaveName  :結果をjsonファイルに書き出したいとき指定するファイル名Body
    '''
    def _gatTGjson(self, ApiCmd="",iSaveName=""):
        __request = urllib.request.Request(self.UrlBase + ApiCmd, headers=self.APIheader)
        __response = urllib.request.urlopen(__request)
        __json = __response.read().decode("utf-8")
        if not len(iSaveName) == 0:
            print(__json, file=codecs.open('./' + iSaveName + '.json' , mode='w')) #書き出し
        return __json
    '''
    今日のタスクを取得
    '''
    def GetTodayTask(self):
        cmd='tasks?today'       #今日のタスク
        return self._gatTGjson(cmd, 'TaskToday')

########################################################################
# Main関数
########################################################################
if __name__ == '__main__':
    tg = TeamGant()             #TeamGantのクラスを作る
    js = tg.GetTodayTask()      #今日のタスクを取得するメソッドを実行してjsonを受け取る
    json_dict = json.loads(js)  #受け取ったjsonを辞書型にする