Notionを使ってタスク管理を一層効率化しませんか?この記事では、iPhoneで未着手のタスクを常に表示する方法を紹介します!
Notionの現状
Notionのタスクデータベースは以下の通り作成しました。
- Name: タスクの内容
- Tags: 仕事なのか、プライベートなのか、それともその他なのか
- Date: タスクを対応する日付け
- Status: 現在のステータス
要件を作成
必須要件
- Notionでタスク管理をする。
- iPhoneで未着手(Not started)のタスクを常に表示できるようにする
- 表示するのは今日やるタスク
- 対応日が決まっていないタスク
- 表示は最大5件
- iPhoneから文字or音声でタスクの登録
- タスクのタイトルだけ登録出来ればOK (対応日などは後でやるでOK)
オプション要件
- macbookのランチャーからタスクの登録・閲覧ができる
以上を要件としました。
ここでは、必須要件の実現方法について説明をしたいと思います。
使用したアプリ類
先に使ったツールをお伝えすると、以下の通りとなります。
- Line(Notiz)
- Scriptable
- ( Raycast + Hypersonic ) ※今回はここの話は割愛します
全体像
以下のような形です。

iPhoneからタスクを追加する
iPhoneからタスクを追加する
スムーズなタスク追加:iPhoneとNotizを連携
私の日常の多くはスマートフォンを通じて進行します。そこで、iPhoneから直接Notionにタスクを追加できる方法を探求しました。その答えが、「Line」と「Notiz」の連携でした。
Lineで、Notizをお友達追加をし、NotizからNotionのデータベースへのインテグレーションを追加することで実現しました。
設定は作者様のURLをご覧ください: Notizという LINE × Notion のサービスを作ったので話を聞いてほしい

Shortcut.appからNotizにPOSTする
毎回、Lineを開いてNotizに投稿するのは手間であるため、Shortcut.appを使って投稿するようにします。
Shotcutを作成しましたのでiPhoneから以下URLにアクセスしてインストールしてください。
※ 自己責任でご利用ください
ここまで
iPhoneにタスクを表示
Scriptable.APPからNotionのタスクを取得する
Sctiptable で以下のソースを追加する(DATABASE_IDとNOTION_API_SECRETはご自身のものに書き換えてください)
const DATABASE_ID = 'NotionのDBのIDを挿入';
const NOTION_API_SECRET = 'NotionAPIのSecretキー';
let url = `https://api.notion.com/v1/databases/${DATABASE_ID}/query`;
let req = new Request(url);
req.headers = {
"Authorization": `Bearer ${NOTION_API_SECRET}`,
"Notion-Version": "2022-06-28"
};
req.method = "POST";
req.body = JSON.stringify({
filter: {
property: "Status",
select: {
equals: "Not started"
}
}
});
let res = await req.loadJSON();
let today = new Date();
today.setHours(0, 0, 0, 0); // Set the time to midnight
let titles = res.results
.filter(result => result.properties.Status.status.name === "Not started") // Ensure status is "Not started"
.filter(result => {
if (!result.properties.Date.date) {
return true; // Include tasks with no date
}
let taskDate = new Date(result.properties.Date.date.start);
taskDate.setHours(0, 0, 0, 0); // Set the time to midnight
return taskDate.getTime() <= today.getTime(); // Include tasks with today's date or before
})
.map(result => {
let prefix = result.properties.Date.date ? "・" : "🤔";
let dateStr = result.properties.Date.date ? new Date(result.properties.Date.date.start).toISOString().split('T')[0].replace(/-/g, '/') : "";
return `${prefix}${result.properties.Name.title[0].text.content} ${dateStr}`;
});
// Display the titles
if (config.runsInWidget) {
let widget = new ListWidget();
titles.forEach(title => {
widget.addText(title);
});
Script.setWidget(widget);
Script.complete();
} else {
console.log(titles);
}
タスクを常に目の前に:iPhoneウィジェットの活用
タスク管理の鍵は、予定やToDoを常に目に見える場所に保つことです。そこで、iPhoneのウィジェット機能とScriptableアプリを活用し、タスクをホーム画面に表示させる方法を採用しました。
iPhoneのウェジットでScriptableを追加します。
- Script: 先程作ったJavaScriptを選択
- When Interacting: Run Script
- Parameter: 空欄

iphoneでしっかりタスクが表示されていることを確認出来ました。
タスクの日付がついていないものな 先頭に🤔がつき、日付がついているものは・が先頭についてます。

まとめ
手動でのタスク追加は時に煩わしいものです。
わざわざNotionアプリやPCからタスク追加をするのも面倒です。
また、iPhoneからであれば、Reminderを使えばもっと詳細な管理ができると思います。
しかし、私の要件としてはできるだけ1つのアプリで物事の全てを管理できるようにしたいという想いがあり、今回の構成に至りました。
今回の実装にあたって、実は私自身JavaScriptを全く触ったことがなかったのですが、ChatGPTに要件を聞いて、JavaScriptの構文がわからない私でも、無事に作成できることが出来ました。
エラー処理などは本当は必要かもしれませんが、自分だけが使うツールなので、良しとします。
ぜひご意見ご感想をください。
コメント