🔖

NotionAPIを使用して、ターミナルからPythonでNotionにメモを書く仕組みを作ってみた

2022/03/21に公開

Macのターミナルから、PythonとNotionAPIを使用して、Notionのデータベースにメモを書いていけるようにしたというメモです。

動機としては、iPhoneからは、「Fast Notion」というアプリからNotionのデータベースにメモを書けるアプリがあって便利。

MacだとNotionアプリで直接編集する必要があり、やや使い勝手が悪かった。

ターミナルからメモできるようにしよう

という感じでした。サクサク動くので、作った結果満足しています。

どのようなものを作ったか。

ターミナルから次のように叩く。(mはnotionに登録するという関数)

#m ここに登録するメモを入力

すると、データベースに次のように、入力した内容に応じた行ができる

やり方

NotionAPIの設定

NotionAPIは、2022年3月2日に正式リリースされた機能。データの登録や参照がPythonなどから簡単にできるので便利です。

次のブログなどを参考に設定します。

登録するコード

ターミナルからNotionのDBに登録するコード

Python部分

import sys

from notion_client import Client

NOTION_TOKEN = '自分のNOTIONのトークンを入力'
notion = Client(auth=NOTION_TOKEN)


def main(message):
    property_name = {"title": [{"text": {"content": message}}]}
    notion.pages.create(
        **{'parent': {'database_id': 'データベースIDを入力'},
           'properties': {'Name': property_name}
           }
    )
  

if __name__ == "__main__":
    message = '\n'.join(sys.argv[1:])
    main(message)

.bashrc

function m() {
  command python memo_notion.py $* &
  clear
}
  • memo_notion.py はコマンドライン引数を受け取る。 引数が複数ある場合は改行
  • .bashrcmという関数を定義
    • ターミナルからm hogeで、hogeというデータをnotionに送る
    • $*は、全引数リストのリストのこと。
    • エイリアスをalias m='python memo_notion.py'のように設定する方法もできるが、引数や、&の扱いが難しかった。
    • 末尾の& でバックグラウンド実行になり、次の入力までの待ち時間がほぼなくなる

まとめ

今のところ気に入っています。
もっと良い仕組みとかあれば教えて欲しい。m hogeのmの箇所を省略する仕組みはないのでしょうか。
簡単ですし、Python初心者向けの導入とかでも良さそうな感じ。

Discussion