0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Apple Script と Automator を使って Notionでの学習を効率化する

Last updated at Posted at 2024-09-25

動機

  • macで勉強するとき、見知らぬ単語があったらストックしたい
  • ストック先はNotionのデータベースがいい
  • 意味もついでに入力したい

手順

下準備

データを格納するNotion Databaseを作成します。
コードをそのまま動かすには、
スクリーンショット 2024-09-25 21.02.46.png
のようなデータベースにしてください。

  1. Automatorを開きます。

  2. 「新規書類」を選択し、「クイックアクション」を選びます。

  3. 左上の検索欄で「AppleScript」と入力します。
    その下に「AppleScriptを実行」という項目が出てくるので、ダブルクリックするか、右のエリアにドラッグ&ドロップします。
    image.png

  4. 「ワークフローが受け取る項目」を「テキスト」に設定します。

  5. 「アプリケーション」を「任意のアプリケーション」に設定します。
    image.png

  6. 左側のライブラリから「AppleScriptを実行」アクションを探し、ワークフロー領域にドラッグ&ドロップします。

  7. 「AppleScriptを実行」アクション内のスクリプト領域に、下記のコードを貼り付けます
    ※NOTION_TOKEN_ID, DATABASE_IDについては,自分のtoken id, database idに変更。
    参考)
    Notion token ID : NotionAPIインテグレーション - 内部インテグレーションの作成を参考に取得してください。
    DATABASE_ID : 追加先のdatabaseのurlの以下の部分です。
    image.png
    (引用:https://developers.notion.com/reference/retrieve-a-database)
    インテグレーションと接続するのを忘れないようにしましよう。接続方法については、https://zenn.dev/kou_pg_0131/articles/notion-api-usage の記事が詳しいです。

  8. クイックアクションを名前をつけて保存

  9. 任意のアプリケーションで文字を選択し、上でつけた名前が右クリックメニューに表示されることを確認してください。

on run {input, parameters}
	set selectedText to input as text
	
	-- ユーザーに説明の入力を求める
	set descriptionText to text returned of (display dialog "この項目の説明を入力してください:" default answer "")
	
	-- Notionのデータベースに追加するためのAPIリクエストを作成
	set notionToken to "NOTION_TOKEN_ID"
	set databaseId to "DATABASE_ID"
	
	-- JSONデータをエスケープ
	set escapedText to do shell script "echo " & quoted form of selectedText & " | sed 's/\"/\\\\\"/g'"
	set escapedDescription to do shell script "echo " & quoted form of descriptionText & " | sed 's/\"/\\\\\"/g'"
	
	set curlCommand to "curl 'https://api.notion.com/v1/pages' " & ¬
		"-H 'Authorization: Bearer " & notionToken & "' " & ¬
		"-H 'Content-Type: application/json' " & ¬
		"-H 'Notion-Version: 2022-06-28' " & ¬
		"--data '{\"parent\": {\"database_id\": \"" & databaseId & "\"}, " & ¬
		"\"properties\": {" & ¬
		"\"Name\": {\"title\": [{\"text\": {\"content\": \"" & escapedText & "\"}}]}, " & ¬
		"\"tag\": {\"multi_select\": [{\"name\": \"word\"}]}, " & ¬
		"\"Description\": {\"rich_text\": [{\"text\": {\"content\": \"" & escapedDescription & "\"}}]}" & ¬
		"}}'"
	
	-- APIリクエストを実行
	set apiResponse to do shell script curlCommand
	
	-- レスポンスを解析してエラーチェック
	if apiResponse contains "error" then
		display dialog "エラーが発生しました: " & apiResponse buttons {"OK"} default button "OK" with icon caution
	else
		display notification "単語「" & selectedText & "」がNotionデータベースに追加されました。"
	end if
	
	return input
end run
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?