時間計測サービスtogglのapiをpythonでたたく.
モチベーション
時間を計測するのに,アプリを開いてボタンを押すのはメンドウ.
今後何かを使用して,自動化したい.
そのときのメモ.
概要
- タイマーをスタートさせる
- タイマーをストップさせる
- プロジェクトを作成する
- 日付を指定して,レポートを取得する
APIをたたくとき必要なもの
- api token:
ブラウザでtoggl My Profile にアクセスして取得
準備しておいたほうがいいもの - workspace_id: プロジェクトの一覧を取得するときに使用
- project_id: プロジェクトを指定するときに使用.プロジェクト名は使えない?
workspace_idの取得
main.py
def get_workspace_id(api_token):
# get workspace id from api/v8/workspaces
r = requests.get('https://www.toggl.com/api/v8/workspaces',
auth=(api_token, 'api_token'))
data = r.json()
Data = data[0]
return Data['id']
project_idの取得
プロジェクト名,idの辞書を作成
main.py
def get_projects(api_token, work_space_id):
# return projects dictionary
p_dictionary = {}
r = requests.get('https://www.toggl.com/api/v8/workspaces/{0}/projects'.format(work_space_id),
auth=(api_token, 'api_token'))
data = r.json()
for d in data:
p_dictionary[d["name"]] = d["id"]
return p_dictionary
実行中のエントリーのidを取得
main.py
def get_running_time_entry(self):
# return time entry id of current entry
r = requests.get('https://www.toggl.com/api/v8/time_entries/current',
auth=HTTPBasicAuth(self._token, 'api_token'))
data = r.json()['data']
if data is None:
return None
return data['id']
タイマーをストップ
main.py
def stop(self, running_time_entry_id):
url = 'https://www.toggl.com/api/v8/time_entries/' + str(running_time_entry_id) + '/stop'
r = requests.put(url, auth=HTTPBasicAuth(self._token, 'api_token'), headers=self._headers)
print('time entry stop. HTTP status :', r.status_code)
return r
タイマーをスタート
main.py
def start(self, description, project_id):
params = {"time_entry": {"description": description, "pid": project_id, "created_with": "python"}}
r = requests.post('https://www.toggl.com/api/v8/time_entries/start',
auth=HTTPBasicAuth(self._token, 'api_token'),
headers=self._headers,
data=json.dumps(params))
print('time entry start. HTTP status :', r.status_code)
プロジェクトを作成する
main.py
def create_project(self, project_name):
params = {"project":{"name": project_name, "wid": self._workspace_id, "is_private": True}}
r = requests.post('https://www.toggl.com/api/v8/projects',
auth=HTTPBasicAuth(self._token, 'api_token'),
headers=self._headers,
data=json.dumps(params))
print('create project. HTTP status :', r.status_code)
self.p
日付を指定して,レポートを取得する
main.py
def get_reports(self, mail_address):
params = {
'user_agent': mail_address,
'workspace_id': self._workspace_id,
'since': '2019-09-11',
'until': '2019-09-11',
}
r = requests.get('https://toggl.com/reports/api/v2/details',
auth=HTTPBasicAuth(self._token, 'api_token'),
params=params)
json_r = r.json()
参考
終わりに
toggl_api_docsはわかりやすかったと思う.もちろんログ一覧を取得するなど他の機能もたくさんある.
自動化でentryできるようにしたい
ソースコードは st34-satoshi/toggl-api