Raycast ScriptでNotionのTodoリストを追加するの絵文字

Raycast ScriptでNotionのTodoリストを追加する

2022-08-21

2023-01-15

はじめに

こんにちは、こふです。

スクリプトを動かし、Todo リストを追加する方法を解説します。Alfred を使うと有料の機能が必要となりますが、Raycast では無料でできます。

  • 前提
    • Raycast のインストール(MacOS のみ)
    • Homebrew でインストール出来ます(brew install --cask raycast
    • Notion のアカウント作成済み
    • シェルスクリプトの簡単な編集

それでは解説を始めます。ステップ 1・2 は、Notion のデータベースに保存した記事の URL・タイトル一覧をファイル形式で出力する - こふぶろぐと共通です。

実際に利用した様子

スクリプトを入力して

入力画面

追加の様子を確認して

実行結果の確認

Notion を見ると実際に追加されていることがわかります。

Notionでの追加確認

この中にはカテゴリを指定していない Todo のみが表示されるようにしているので、追加後にここからカテゴリを適宜追加したり、不要なら後回しにセレクトを設定しています。

ちなみに、絵文字アイコンをロボットにすることで、この TodoRaycast から追加したんだな〜とわかるようにしています。(本来なら Raycast の画像を指定するのが最適ですね。)

ステップ 1:Integration を作成する

Notion API を使うための API SECRET KEY を取得します。

My integrations | Notion Developersにアクセスしてください。

権限は全て与えることとしますが、Read content / Update contentは不要です。個人的にこのトークンを併用しているため、僕はすべてにチェックしています(推奨はしません・・・)

用途ごとに Integration は分けることを推奨します。

権限を選ぶ

ステップ 2:Integration をデータベースに招待する

記事を保存しているデータベースのページに Share(共有)にその Integration を招待してください。

ステップ 1 で作成した Integration の名前を入力し、選んで招待しましょう。

ちなみに、データベース右上のボタンを押すと以下のようになります。

Integration招待の画面

ステップ 3:Raycast Script を作成する

公式サイトにRaycast Scripts のはじめ方が載っていますが、英語なので、僕なりにここで記述します。

  • Raycast を起動する
  • Create Script Command を入力し選ぶ
  • 作成画面に移る
  • Bash を選び適当な名前を入力する

Raycast Script作成画面

これだけです。

ステップ 4:コードを書く

掲載するコードをコピペしていただくと、すぐにできると思います。

Notion のデータベースの構造が僕と同じとは限りませんので、適宜切り貼りしましょう。

以下のファイルは同じディレクトリに配置します。

環境変数ファイル

.env
1NOTION_API_KEY=secret_hogehoge 2TODO_DB_ID=hogehogehogehogehogehoge

追加用スクリプトファイル

propertiesのところはProperty valuesを参考に、各自のカラムを指定してあげてください。

コードを載せた後に個別で解説しますので、わからない方はスクロールしてお読みください。

todo.sh
1#!/bin/bash 2 3# Required parameters: 4# @raycast.schemaVersion 1 5# @raycast.title todo 6# @raycast.mode compact 7 8# Optional parameters: 9# @raycast.icon 🤖 10# @raycast.argument1 { "type": "text", "placeholder": "Input task name" } 11source .env 12 13curl 'https://api.notion.com/v1/pages' \ 14 -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \ 15 -H "Content-Type: application/json" \ 16 -H "Notion-Version: 2022-06-28" \ 17 --data '{ 18 "parent": { "database_id": "'$TODO_DB_ID'" }, 19 "icon": { 20 "emoji": "🤖" 21 }, 22 "properties": { 23 "Title": { 24 "title": [ 25 {"text": {"content": "'$1'"}} 26 ] 27 }, 28 "Importance":{ 29 "select": { 30 "name": "Low" 31 } 32 }, 33 "Priority":{ 34 "select": { 35 "name": "Low" 36 } 37 }, 38 "Period":{ 39 "date": { 40 "start": "'$(date +%Y-%m-%d)'" 41 } 42 } 43 } 44}'

コード解説

処理したいことは、次のようになります。

スクリプト起動時にタイトルの文字列を受け取り、それを元に Todo のレコードを作成するが、その初期値を自分好みに設定する。ということです。

1# 環境変数ファイルを実行し、そのターミナル上でのみ値を持たせる 2source .env
1# @raycast.argument1 { "type": "text", "placeholder": "Input task name" } 2# 引数を受け取るRaycastScriptの用法
1# タイトルはNotionのデータベース作成時から削除できない必須の列で、その文字列はRaycastScriptで受け取った引数とする 2"Title": { 3 "title": [ 4 {"text": {"content": "'$1'"}} 5 ] 6}, 7# selectから設定したい値を選択する 8"Importance":{ 9 "select": { 10 "name": "Low" 11 } 12}, 13"Priority":{ 14 "select": { 15 "name": "Low" 16 } 17}, 18# Todoを行う期間を設定しており、デフォルトとして作成時点をとりあえず入れる 19"Period":{ 20 "date": { 21 "start": "'$(date +%Y-%m-%d)'" 22 } 23}

おわりに

これで Todo リストをNotion にパッと追加したい時に PC に限り追加が可能になりました。



アバター

こふ

情報通信を専攻している大学生です。大学(研究)・趣味・アルバイトでプログラムを書いています。ITツール・サービス・文章を創作することが好きです。

ぼくについて

共有する