以前、Python で Todoist の「今日のタスク」を取得・表示するスクリプトを紹介しましたが、今回はそれのバージョンアップです。
前回の記事では「今日のタスク」を一括表示していましたが、今回のプログラムでは Todoist のプロジェクトごとに表示するようになっています。
ご参考まで。
2023/01/17 追記
いつのまにか Todoist 公式 の Python API が刷新されていました。
(プロジェクトやタスクが辞書型ではなくクラス型に変更されていました)
https://developer.todoist.com/rest/v2/?python#overview
下記に新しいコードを貼り付けましたので参考にしてください。
#This code displays "today's tasks" by project.
import todoist
import datetime
def GetTodaysTasks(items):
tasks = []
now = datetime.datetime.now()
search_date_str = now.strftime('%Y-%m-%d')
for item in items:
due = item['due']
if due is not None:
if due['date'] == search_date_str:
tasks.append(item)
return tasks
def GetProjectDict(projects):
dict = {}
for prj in projects:
dict[prj['id']] = prj['name']
return dict
def PrintTasksByProject(tasks, project_dict):
for k, v in project_dict.items():
items = []
for task in tasks:
if (task['project_id']==k and task['checked']==0):
items.append(task['content'])
if len(items)>0:
print('* '+v)
for item in items:
print(item)
print('')
if __name__=='__main__':
api = todoist.TodoistAPI('your token')
response = api.sync()
items = api.state['items']
projects = api.state['projects']
todays_tasks = GetTodaysTasks(items)
project_dict = GetProjectDict(projects)
PrintTasksByProject(todays_tasks, project_dict)
#This code displays "today's tasks" by project.
from todoist_api_python.api import TodoistAPI
import datetime
def GetTodaysTasks(items):
tasks = []
now = datetime.datetime.now()
search_date_str = now.strftime('%Y-%m-%d')
for item in items:
due = item.due
if due is not None:
if due.date == search_date_str:
tasks.append(item)
return tasks
def GetProjectDict(projects):
dict = {}
for prj in projects:
dict[prj.id] = prj.name
return dict
def PrintTasksByProject(tasks, project_dict):
for k, v in project_dict.items():
items = []
for task in tasks:
if (task.project_id==k and task.is_completed==False):
items.append(task.content)
if len(items)>0:
print('* '+v)
for item in items:
print(item)
print('')
if __name__=='__main__':
api = TodoistAPI('Your Token')
#response = api.sync()
items = api.get_tasks()
projects = api.get_projects()
todays_tasks = GetTodaysTasks(items)
project_dict = GetProjectDict(projects)
PrintTasksByProject(todays_tasks, project_dict)
コメント