Notionでタスク管理を効率化!iPhoneで未着手タスクを常時チェックする方法

postit Tips

Notionを使ってタスク管理を一層効率化しませんか?この記事では、iPhoneで未着手のタスクを常に表示する方法を紹介します!

Notionの現状

Notionのタスクデータベースは以下の通り作成しました。

  • Name: タスクの内容
  • Tags: 仕事なのか、プライベートなのか、それともその他なのか
  • Date: タスクを対応する日付け
  • Status: 現在のステータス

要件を作成

必須要件

  1. Notionでタスク管理をする。
  2. iPhoneで未着手(Not started)のタスクを常に表示できるようにする
    • 表示するのは今日やるタスク
    • 対応日が決まっていないタスク
    • 表示は最大5件
  3. iPhoneから文字or音声でタスクの登録
    • タスクのタイトルだけ登録出来ればOK (対応日などは後でやるでOK)

オプション要件

  1. macbookのランチャーからタスクの登録・閲覧ができる

以上を要件としました。

ここでは、必須要件の実現方法について説明をしたいと思います。

使用したアプリ類

先に使ったツールをお伝えすると、以下の通りとなります。

全体像

以下のような形です。

iPhoneからタスクを追加する

iPhoneからタスクを追加する

スムーズなタスク追加:iPhoneとNotizを連携

私の日常の多くはスマートフォンを通じて進行します。そこで、iPhoneから直接Notionにタスクを追加できる方法を探求しました。その答えが、「Line」と「Notiz」の連携でした。

Lineで、Notizをお友達追加をし、NotizからNotionのデータベースへのインテグレーションを追加することで実現しました。

設定は作者様のURLをご覧ください: Notizという LINE × Notion のサービスを作ったので話を聞いてほしい

Notizという LINE × Notion のサービスを作ったので話を聞いてほしい|hal_shu1626
ごあいさつ  はじめまして、初投稿です。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の構文がわからない私でも、無事に作成できることが出来ました。

エラー処理などは本当は必要かもしれませんが、自分だけが使うツールなので、良しとします。

ぜひご意見ご感想をください。

コメント

タイトルとURLをコピーしました