Toogl APIを用いてデータをGoogleスプレッドシートに出力する

  • 1
    いいね
  • 1
    コメント

環境

  • Windows 10 (Windows 7でも動作確認済みです)
  • Python 2.7.12

前提

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.(出力させるスプレッドシートのシート名)

#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'