Pythonで作業効率化

【Python+Todoist】CSVファイルにタスクを出力する

Todoistは、Todoリスト作成としてかなり使いやすいツールですが、無料ではデータ出力などアウトプット面の機能は充実していません。

データを出力したい場合は他の機能と連携するかAPIを使う必要があります。

本記事はTodoist+PythonでAPIを操作してCSVファイルにタスク出力する処理を紹介する記事です。

具体的には以下の2点について説明します。

・【Python+Todoist】CSVファイル出力に必要な処理
・【Python+Todoist】CSVファイル出力実装例

【Python+Todoist】CSVファイル出力に必要な処理

TodoistのタスクをCSVファイルに出力するために必要な処理は以下の2つです。

・Todoistの予定を取得する
・PythonでCSVファイルにデータを書き込む

Todoistの予定を取得する

Todoistのタスクを取得するために必要な準備は以下の3点です。
・TodoistのAPIキーを取得
・TodoistのAPI用ライブラリをインストール
・タスク取得処理を作成

手順の詳細については「「todoist-python」ライブラリでタスクを取得する方法」をお読みください。

PythonでCSVファイルにデータを書き込む

CSVファイルにデータを書き込む方法がありますが、今回は「csv」ライブラリを使用します。

CSVファイルに書き込む手順は以下の4つです。

・ファイルを開く
・テキストデータを2次元配列に格納
・CSVファイルに書き込む
・ファイルを閉じる

上記手順をソースコードにすると以下のようになります。

上記コードを実行すると以下のようになります。

あいうえおかきくけこ
さしすせそたちつてと

※CSVファイルをカンマ区切りで開いた場合

CSVライブラリの具体的な使い方については「PythonでCSVファイルに書き込む方法」をお読みください。

【Python+Todoist】CSVファイル出力実装例

今回はTodoistタスクの以下の内容を出力する処理を作成します。

出力する情報:今日の予定
・1列目:プロジェクト名
・2列目:タスク名
・3列目:タスクの状況。終わっていたら「済み」を入れる

◆出力例

プロジェクト,タスク名,タスクの状態
インボックス,テスト2,
インボックス,テスト3,
インボックス,テスト1,済み

一行目は各カラムの説明の行です。

1カラム目にプロジェクト名はタスクテーブルにはないので親テーブルから取得する必要があります。
Todoist自作モジュールにget_project_name()というメソッドを用意したのでこちらで呼び出せばOKです。

2カラム目のタスク名はタスクテーブルの'content'に格納されています。

3カラム目には、タスクの状態を入れます。
完了済みなら「済み」、終わっていない場合は空欄にします。

完了状態はテーブルの'checked'に格納されていますが、繰り返しのタスクは完全に完了するまで'checked'が入りません。
繰り返しのタスクかどうかはタスクテーブルの['due']['is_recurring']に格納されています。

判定例は以下の通り。

上記例ではitem['due']['date']に日付が含められていない場合は済みにします。

実装例は以下の通りです。

※上記コード単体では動作しないので「TodoistのAPIで今日の予定を確認する〜PythonでTodoistを管理〜」のTodoistモジュールも合わせて実装してください。

◆実行例
以下のタスクを出力します。
Todoistタスク

◆実行結果
task.csvの出力内容

プロジェクトタスク名タスクの状態
インボックステスト2
インボックステスト3
インボックステスト1済み

※CSVファイルをカンマ区切りで開いた場合

終わりに

Todoist単体ではデータを出力する機能がありませんので、今回紹介した例のようにAPIを使って出力する必要があります。

今回はタスク名やプロジェクト名のみでしたが、タスクテーブルには期限や日付などの情報も格納されているのでそれらの情報をCSVファイルに出力することも可能です。

上記コードが動作できたら他の値の出力についても試してみてください。

関連記事>>【Python+Todoist】スプレッドシートにタスクを出力する

Todoist+Pythonまとめ>>Todoist+Pythonの活用方法まとめ

こちらの記事も読まれています

  • この記事を書いた人

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonで作業効率化
-

Copyright© みやびのどっとぴーわい , 2024 All Rights Reserved Powered by AFFINGER5.