#環境
- Windows 10 (Windows 7でも動作確認済みです)
- Python 2.7.12
#前提
- Togglに登録済み Togglのサイト
#TogglのAPIを使う準備
1.TogglのMy profile(Profile settingsをクリック)のページの下部に記載されているAPI_tokenを取得
2.以下のコードに取得したAPI_tokenを入力して回し、workspace IDを取得
workspace_id_export.py
# -*- coding: utf-8 -*-
#workspaceIDの取得
import requests
#TogglのMy profileから、API_Tokenを取得(入力)
_api_token = '(取得したAPI_Token)'
r = requests.get('https://www.toggl.com/api/v8/workspaces',
auth=(_api_token, 'api_token'))
#JSON形式でデータのエクスポート
data = r.json()
#JSONファイルからidの取得
Data = data[0]
id = Data['id']
#workspaceIDの出力
print id
#Googleスプレッドシートにデータをエクスポートする準備
1.PythonからGoogleドライブにアクセスするための認証
PythonでGoogleSpreadSheetをいじる
を参考に、Google Developers Consoleから設定
2.ダウンロードしたJSONファイルの名前を”Drive_API_Project”に変更
3.出力させるGoogleスプレッドシートのキーを取得
キーは、URL https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxx/edit の xxxxxxxxxxxxxxxx の部分です。
参照:Google Apps Script で Spreadsheet にアクセスする方法まとめ
#Togglからデータをスプレッドシートに出力させる
Toggl_data_export.py
# -*- coding: utf-8 -*-
import requests
from requests.auth import HTTPBasicAuth
import json
from json import loads
import os
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from datetime import datetime as dt
#Google SpreadSheetへのアクセス
scope = ['https://spreadsheets.google.com/feeds']
#Google SpreadSHeetのキー(入力)
doc_id = '出力させるスプレッドシートのキーを入力'
path = os.path.expanduser("Drive_API_Project.json")
#Googleアカウントの認証
credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scope)
client = gspread.authorize(credentials)
gfile = client.open_by_key(doc_id)
# データをエクスポートするシートの選択(シート名を変更)
wsh = gfile.worksheet(出力させるスプレッドシートのシート名)
#TogglのAPIの認証キー(入力)
_api_token = '(API tokenを入力)'
#Togglのデータ取得設定
_params = {
'user_agent': '(登録しているメールアドレスを入力)', #登録しているメールアドレス(入力)
'workspace_id': '(取得したworkspaceIDを入力)', # TogglのworkspaceIDを入力(入力)
'since': '2016-12-11', # データ取得開始日(入力)
'until': '2016-12-11', # データ取得終了日(入力)
}
# TogglのAPIに接続
r = requests.get('https://toggl.com/reports/api/v2/details',
auth=HTTPBasicAuth(_api_token, 'api_token'),
params=_params)
# TogglのAPIに接続できているかの確認(200が出ればOK!)
#print r.status_code
# JSONファイルからのデータ取得
data = r.json()
Data = data['data']
row = 0
#データの取得
for i in Data:
dataset = Data[row]
#タスク名の取得
data01 = dataset['description']
#開始日、開始時間の取得
start = dataset['start']
sd = start[0:10]
st = start[11:19]
#文字コードを日時に変換
s = sd + ' ' + st
date_s = dt.strptime(s,'%Y-%m-%d %H:%M:%S')
#終了日、終了時間、取得
end = dataset['end']
ed = end[0:10]
et = end[11:19]
#文字コードを日時に変換
e = ed + ' ' + et
date_e = dt.strptime(e,'%Y-%m-%d %H:%M:%S')
#かかった時間の取得
dur = date_e - date_s
#データの格納
data02 = sd
data03 = st
data04 = ed
data05 = et
data06 = dur
#Google SpreadSheetに出力
wsh.update_cell(row + 1,1,data01)
wsh.update_cell(row + 1,2,data02)
wsh.update_cell(row + 1,3,data03)
wsh.update_cell(row + 1,4,data04)
wsh.update_cell(row + 1,5,data05)
wsh.update_cell(row + 1,6,data06)
#次の行に移動
row += 1
#データの出力が終わったら'finish'がプリントされる
print 'finish'