WorkFlowyのタスクリストをターミナルに出力する
以下のようなノードがあるときに、
https://gyazo.com/e254ddbcf6f9843bca6b876c8459beef
以下のようにターミナルに出力する
https://gyazo.com/4d38443fb2eecf5a3d0d2ed25a9dda2e
code:sample.py
import datetime
import locale
import json
# APIキーをここに設定します
API_KEY = ""
# 再帰処理で呼び出される関数を定義
def get_children_nodes(parent_id, indent=0):
"""
指定されたparent_idの子ノードを再帰的に取得し、表示する関数。
"""
headers = {
"Authorization": f"Bearer {API_KEY}"
}
params = {
"parent_id": parent_id
}
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
response_data = response.json()
# レスポンスに 'nodes' が含まれていない、または空の場合は終了
if not response_data.get('nodes'):
return
# 子ノードを1つずつ処理
# completedAtの値をチェックし、絵文字を付与
completed_at = node.get('completedAt')
emoji = " "
if completed_at is not None:
# 完了時刻が存在する場合、終了を示す絵文字を付与
emoji = " ✅"
# ノード情報を階層的に表示
indent_str = " " * indent
print(f"{indent_str}- {emoji}{node_name} (ID: {node_id})")
# 取得した子ノードのIDを使って、再度この関数を呼び出す(再帰呼び出し)
get_children_nodes(node_id, indent + 1)
except requests.exceptions.RequestException as err:
print(f"リクエスト中にエラーが発生しました: {err}")
return # エラーが発生した場合は処理を終了
# スクリプトの実行部分
if __name__ == "__main__":
# ここに探索を開始したい親ノードのIDを設定
root_node_id = "d6644a4c-8355-0c1e-7515-9059816676d0"
print(f"タスクリストを取得します (ルートID: {root_node_id})...")
get_children_nodes(root_node_id)
上記のAPIで返ってくるのは以下。
code:sample.json
{
"nodes": [
{
"id": "36f22704-8ebe-529b-1738-1e22ce68be85",
"name": "ブックカタリスト123",
"note": null,
"priority": 100,
"completed": false,
"data": {
"layoutMode": "bullets"
},
"createdAt": 1758147082,
"modifiedAt": 1758147087,
"completedAt": null
}
]
}