VScode の選択部分を最後に更新したページの最後に code block として挿入: Notion 解説(38)

はじめに

昨日、特定のページを検索してコードブロックを挿入する記事を書きました(VScode の選択部分を Notion の codeblock として挿入 : Notion 解説(37) - hkob’s blog)。使ってみて、今実行しているポモドーロのページに追記できた方が楽だし、設定項目も減って使いやすいのではと気づきました。そんなわけで、昨日リリースしたばかりですが、早速作り直します。

変更点

特定のデータベースでタイトルを検索するのではなく、データベースの中で一番新しいものを選択するようにします。このため以下の設定項目のみ設定すればいいだけになります。

  • code-block-to-notion.notionToken: Notion のトークン (secret で始まる文字列)
  • code-block-to-notion.databaseId: 検索するデータベース ID (16進数の羅列)
  • code-block-to-notion.openByApp: ページを Notion で開く時には true (true)

一番新しいものを検索するには、データベースの中で一番新しいものということで、「last_edited_time」が一番大きいものを検索すればいいだけになります。

コードの修正

まず、必要ない設定の読み込みを消しました。次に、ページの取得部分の関数名を getLastEditedPage に変更しました。

        const myPage = await getLastEditedPage();

getLastEditedPage は単に timestamp 順の新しい順に並べ、一番先頭を取得します。前回は検索条件で自動的に一つしか取得しませんでしたが、今回は page_size で 1 件に絞っています。

async function getLastEditedPage() {
    let myPage;
    try {
        const lists = await notion.databases.query({
            database_id: databaseId,
            sorts: [
                {
                    timestamp: "last_edited_time",
                    direction: "descending"
                },
            ],
            page_size: 1
        });
        myPage = lists.results[0];
    } catch (error) {
        return undefined;
    }
    return myPage;
}

テスト

今日の「1ポモドーロ」はこの記事を書くタスクでした。Alfred から「an code-block-to-notion のアップデート」でタスクを作成しました。さらに「pn」で「1-1」ポモドーロを設定しています。この状態で、このページが一番最新のページになっているはずです。

そこで、上の「コードを修正」と同じ文章を書いてみました。先にテキストを書き、VScode の選択部分をこの下に追加してみます。ちゃんと一番新しい記事であるこのページに追加されていることがわかります。

この記事を書く Notion タスクに追加された

おわりに

設定項目も少なくなりましたし、普通の人にも使いやすくなったのではないかと思います。

この機能拡張はこちらで配布しています。

github.com


hkob.notion.site