Notionの本棚にiPhoneで本を登録する【サンプルあり】

Notion API x Shortcuts サンプル

読書メモをNotionにつけています。新しい本を買った時に本の情報を登録するのが大変でした。文字情報はまだしも、本の表紙をひとつずつ見つけて登録していくのが手間でしょうがない。その手間を、Shortcutsを使って解消することができましたのでご紹介します。

Shortcutsとは、アプリでの1つまたは複数の作業を素早く完了するための機能です。Appleが提供しているiOS・macOSで使うことができます。使用は無料です。

これを使ってNotionに作った本棚に本の情報を登録するための手順を紹介します。登録するときは本のバーコードをiPhoneのカメラでスキャンするだけです。本の情報の登録は本棚のテンプレートも配布していますのですぐに使うことができます。もちろんこのテンプレートを使わなくても、プロパティの名前を変えれば今使っているNotionの本棚データベースに登録することもできます。

本棚のテンプレート(Notion)

バーコードから本棚に登録する(Shortcuts)

準備は少し大変ですが、今後の読書ライフが快適になることは間違いないので、ぜひ試してみてください。

Notionに本棚を作る

Notionに書籍情報を登録するためのデータベースを作ります。登録したいプロパティがあれば大丈夫ですが、今回のShortcut用のテンプレートを作ったのでサンプルとしてご利用ください。右上の「複製」ボタンを押せば、ご自身のNotionにコピーされます。プロパティ名・タイプをShortcutsと同じものを使っていれば、このテンプレートでなくても構いません。

プロパティは以下のものを準備しました。

Notionのプロパティ名プロパティタイプ備考
Nametitle書籍名
サブタイトルrich_text
著者名rich_text
出版日rich_text
ISBNnumber
URLurl楽天ブックス内にある本のページを開く

書籍情報を検索する

ここからはShortcutsを作成していきます。

本の背面にあるISBNコードをiPhoneのカメラで撮影し、書籍情報を検索します。検索は楽天ブックス書籍検索APIを使います。楽天ブックス書籍検索APIの使用には初期登録が必要ですが、無料で簡単に登録できます。検索した書籍情報を整理して、本棚に本を登録する準備をします。

ISBNコードを撮影する

Shortcutsのアクション QRまたはバーコードをスキャン を使います。これだけでカメラを起動し、本のバーコードを読めば ISBNコードを読み込めます。何かを設定する必要はありません。

Shortcutsを起動してバーコードを読むとISBNコードを取得できます

読み込んだISBNコードと楽天ブックス書籍検索APIを使って書籍情報を検索します。

書籍情報を検索する

Notionに登録する書籍情報を検索します。書籍検索APIはいくつかありますが、私は情報が必要十分で扱いやすいことから楽天ブックス書籍検索APIを使用しています。簡単な初期登録さえ済ませてしまえばすぐに使えます。

楽天ブックス書籍検索API

登録はこちら

今回の記事では個人利用を想定しています。個人利用するだけなら必須項目は適当なものを使用して良いでしょう。私は以下のものを登録しています。

  • アプリ名(必須)… BookMemo
  • アプリURL(必須)… https://example.com/

画像に書かれている英数字を認証に入力して「規約に同意して新規アプリを作成」を押せば登録完了です。結果画面に表示されている アプリID/デベロッパーID という19桁の数字をコピーして、以下のサンプルURLを完成させてください。

https://app.rakuten.co.jp/services/api/BooksBook/Search/20170404?format=json&isbn=9784478108536&applicationId=ここにアプリIDをペースト

完成したURLをブラウザのアドレスバーに入力すると、JSON形式で文章が表示されます。読みやすく改行すると、このような情報が返ってきていることがわかります。

{
    "GenreInformation": [],
    "Items": [
        {
            "Item": {
                "affiliateUrl": "",
                "author": "読書猿",
                "authorKana": "ドクショザル",
                "availability": "1",
                "booksGenreId": "001008012003/001008012002",
                "chirayomiUrl": "",
                "contents": "",
                "discountPrice": 0,
                "discountRate": 0,
                "isbn": "9784478108536",
                "itemCaption": "読むのが遅い。時間がない。続かない。頭が悪い。お金がない。やる気が出ない。何を、どう学べばいいか迷ったときの羅針盤。「自分を変えたい」すべての人へ。",
                "itemPrice": 3080,
                "itemUrl": "https://books.rakuten.co.jp/rb/16399022/",
                "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200x200",
                "limitedFlag": 0,
                "listPrice": 0,
                "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=120x120",
                "postageFlag": 2,
                "publisherName": "ダイヤモンド社",
                "reviewAverage": "4.2",
                "reviewCount": 204,
                "salesDate": "2020年09月30日頃",
                "seriesName": "",
                "seriesNameKana": "",
                "size": "単行本",
                "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=64x64",
                "subTitle": "絶対に「学ぶこと」をあきらめたくない人のための55の技法",
                "subTitleKana": "ゼッタイニマナブコトヲアキラメタクナイヒトノタメノ55ノギホウ",
                "title": "独学大全",
                "titleKana": "ドクガクタイゼン"
            }
        }
    ],
    "carrier": 0,
    "count": 1,
    "first": 1,
    "hits": 1,
    "last": 1,
    "page": 1,
    "pageCount": 1
}

先程のURLの中にはISBNコードが含まれています。本のバーコードをスキャンしたISBNをURLに追加してあげれば本の情報が取得できます。

スキャンしたISBNと楽天API アプリIDをそれぞれ変数に設定してURLを作ります。

このURLを使ってURLの内容を取得します。方法はGET、ヘッダには何も入力しません。

英数字が多くて読みづらいけど、3行目から4行目にかけて「独学大全」という文字が見えます

iPhoneでショートカットを実行して手元の本のバーコードをスキャンすると、先程ブラウザで取得したものと同じ本の情報を取得できます。

書籍情報を変数に設定する

読み取った本の情報はNotionに登録しやすいように、変数を設定しておきましょう。しかしAPIで取得した情報はこのままでは使えません。APIの結果から辞書の値を取得リストから項目を取得を組み合わせてほしい情報を取り出し、Notionに登録しやすいように変数を設定しましょう。Notioinで作ったテーブルと楽天ブックス書籍検索APIの対応表は以下のとおりです。

Notionのプロパティ名楽天ブックス書籍書籍APIキーの名前値(サンプル)
Nametitle独学大全
サブタイトルsubTitle絶対に「学ぶこと」をあきらめたくない人のための55の技法
著者名author読書猿
出版日salesDate2020年09月30日頃
ISBNisbn9784478108536
URLitemUrlhttps://books.rakuten.co.jp/rb/16399022/
iconlargeImageUrlhttps://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200×200

iconはプロパティではありませんが、登録する本の表紙をアイコンにするために使いたいので記載しています。

楽天ブックス書籍検索APIの結果は何層にも重なっています。Shortcutsアクションの辞書リストを使って取り出していきます。

辞書

APIの結果の中で { } で囲まれているものは辞書です。キーと値、もしくはキーと辞書がそれぞれ 1対1で対応しています。API結果の1階層目は { } で囲まれているので辞書ということになります。キーは以下の英単語です。

  • GenreInformation
  • Items
  • carrier
  • count
  • first
  • hits
  • last
  • page
  • pageCount

欲しい情報はItemsの中に含まれているので、辞書の値を取得を使います。

この結果は、キーがItemsの値です。具体的には以下の内容を抜き出したものになります。

[
    {
        "Item": {
            "affiliateUrl": "",
            "author": "読書猿",
            "authorKana": "ドクショザル",
            "availability": "1",
            "booksGenreId": "001008012003/001008012002",
            "chirayomiUrl": "",
            "contents": "",
            "discountPrice": 0,
            "discountRate": 0,
            "isbn": "9784478108536",
            "itemCaption": "読むのが遅い。時間がない。続かない。頭が悪い。お金がない。やる気が出ない。何を、どう学べばいいか迷ったときの羅針盤。「自分を変えたい」すべての人へ。",
            "itemPrice": 3080,
            "itemUrl": "https://books.rakuten.co.jp/rb/16399022/",
            "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200x200",
            "limitedFlag": 0,
            "listPrice": 0,
            "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=120x120",
            "postageFlag": 2,
            "publisherName": "ダイヤモンド社",
            "reviewAverage": "4.2",
            "reviewCount": 204,
            "salesDate": "2020年09月30日頃",
            "seriesName": "",
            "seriesNameKana": "",
            "size": "単行本",
            "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=64x64",
            "subTitle": "絶対に「学ぶこと」をあきらめたくない人のための55の技法",
            "subTitleKana": "ゼッタイニマナブコトヲアキラメタクナイヒトノタメノ55ノギホウ",
            "title": "独学大全",
            "titleKana": "ドクガクタイゼン"
        }
    }
]

リスト

APIの結果の中で [ ] で囲まれているものはリストです。キーはなく、値のみが複数個入っています。リスト辞書のようにキーではなく、何個目の値を取得するかを指定します。先程取得したItemsの中身が 1個のみのリストになっています。辞書の値から最初の項目を取得すればOKです。

この結果はリストから一つ目の値を取得してきています。似ていますが、1行目と最後の行の [ ] がなくなっています。

  {
    "Item": {
        "affiliateUrl": "",
        "author": "読書猿",
        "authorKana": "ドクショザル",
        "availability": "1",
        "booksGenreId": "001008012003/001008012002",
        "chirayomiUrl": "",
        "contents": "",
        "discountPrice": 0,
        "discountRate": 0,
        "isbn": "9784478108536",
        "itemCaption": "読むのが遅い。時間がない。続かない。頭が悪い。お金がない。やる気が出ない。何を、どう学べばいいか迷ったときの羅針盤。「自分を変えたい」すべての人へ。",
        "itemPrice": 3080,
        "itemUrl": "https://books.rakuten.co.jp/rb/16399022/",
        "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200x200",
        "limitedFlag": 0,
        "listPrice": 0,
        "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=120x120",
        "postageFlag": 2,
        "publisherName": "ダイヤモンド社",
        "reviewAverage": "4.2",
        "reviewCount": 204,
        "salesDate": "2020年09月30日頃",
        "seriesName": "",
        "seriesNameKana": "",
        "size": "単行本",
        "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=64x64",
        "subTitle": "絶対に「学ぶこと」をあきらめたくない人のための55の技法",
        "subTitleKana": "ゼッタイニマナブコトヲアキラメタクナイヒトノタメノ55ノギホウ",
        "title": "独学大全",
        "titleKana": "ドクガクタイゼン"
    }
}

また辞書になりました。最後にキーItemを取得したものが求めていた本の情報になります。

  {
    "Item": {
        "affiliateUrl": "",
        "author": "読書猿",
        "authorKana": "ドクショザル",
        "availability": "1",
        "booksGenreId": "001008012003/001008012002",
        "chirayomiUrl": "",
        "contents": "",
        "discountPrice": 0,
        "discountRate": 0,
        "isbn": "9784478108536",
        "itemCaption": "読むのが遅い。時間がない。続かない。頭が悪い。お金がない。やる気が出ない。何を、どう学べばいいか迷ったときの羅針盤。「自分を変えたい」すべての人へ。",
        "itemPrice": 3080,
        "itemUrl": "https://books.rakuten.co.jp/rb/16399022/",
        "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200x200",
        "limitedFlag": 0,
        "listPrice": 0,
        "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=120x120",
        "postageFlag": 2,
        "publisherName": "ダイヤモンド社",
        "reviewAverage": "4.2",
        "reviewCount": 204,
        "salesDate": "2020年09月30日頃",
        "seriesName": "",
        "seriesNameKana": "",
        "size": "単行本",
        "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=64x64",
        "subTitle": "絶対に「学ぶこと」をあきらめたくない人のための55の技法",
        "subTitleKana": "ゼッタイニマナブコトヲアキラメタクナイヒトノタメノ55ノギホウ",
        "title": "独学大全",
        "titleKana": "ドクガクタイゼン"
    }
}

結果が以下のものになります。ここからNotionに送りたい値を取得して、変数を設定します。値はこれまでと同じ様に、辞書の値を取得します。

{
    "affiliateUrl": "",
    "author": "読書猿",
    "authorKana": "ドクショザル",
    "availability": "1",
    "booksGenreId": "001008012003/001008012002",
    "chirayomiUrl": "",
    "contents": "",
    "discountPrice": 0,
    "discountRate": 0,
    "isbn": "9784478108536",
    "itemCaption": "読むのが遅い。時間がない。続かない。頭が悪い。お金がない。やる気が出ない。何を、どう学べばいいか迷ったときの羅針盤。「自分を変えたい」すべての人へ。",
    "itemPrice": 3080,
    "itemUrl": "https://books.rakuten.co.jp/rb/16399022/",
    "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=200x200",
    "limitedFlag": 0,
    "listPrice": 0,
    "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=120x120",
    "postageFlag": 2,
    "publisherName": "ダイヤモンド社",
    "reviewAverage": "4.2",
    "reviewCount": 204,
    "salesDate": "2020年09月30日頃",
    "seriesName": "",
    "seriesNameKana": "",
    "size": "単行本",
    "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8536/9784478108536.jpg?_ex=64x64",
    "subTitle": "絶対に「学ぶこと」をあきらめたくない人のための55の技法",
    "subTitleKana": "ゼッタイニマナブコトヲアキラメタクナイヒトノタメノ55ノギホウ",
    "title": "独学大全",
    "titleKana": "ドクガクタイゼン"
}

ここで一つポイントがあります。ここから先は取り出した辞書の値から、さらに何度も辞書の値を取得することになります。何度も使うことになるので、たまに間違えて別の辞書の値を取得から取得してしまうことがあります。間違えないように、この結果を変数を設定して名前をつけておいた方がいいです。

ここから先は 変数 Item から辞書の値を取得しましょう。すべては記載しませんが、ここから先の変数名にはプロパティ名を使います。

うまくいかない時の対処法

先頭から1ステップごとにアクション 結果を表示 を挟んで、期待通りの結果になっているかとうまくいっていない場所を確認していきます。大抵はどこかのキーを誤っていたりします。場所を特定できたら、前後を調べて原因を探ります。

慣れていても間違えてしまうことはあるので、うまくいかなかった時の調査方法は覚えておきましょう。

Notionの本棚に本を登録する

すべてのプロパティで 変数を設定 したら、いよいよNotionに登録します。本棚のデータベースIDを取得してページを作ります。本棚に登録するときはアクションURLの内容を取得を使います。Notionに作ったデータベースにページを追加するためのアクションを書いたものがこちらです。なお、Shortcutsを使ってNotionにページを追加するための方法はこちらを参照してください。リクエストボディに本の情報を追加します。

ここからはリクエストボディの指定方法について記載します。プロパティタイプごとに記載方法が違うので、それぞれ解説します。

parent

database_id に本棚のデータベースIDを記載します。

icon

url に楽天ブックス書籍検索APIで取得した商品画像 URLを記載します。

properties

ここから先は propertiesというキーの下にプロパティ名を設定します。プロパティ名とプロパティタイプは次のとおりです。

Notionのプロパティ名プロパティタイプ
Nametitle
サブタイトルrich_text
著者名rich_text
出版日rich_text
ISBNnumber
URLurl

プロパティタイプごとに解説します。

properties/title

該当するプロパティ

  • Name

properties/rich_text

該当するプロパティ

  • サブタイトル
  • 著者
  • 出版日

properties/number

該当するプロパティ

  • ISBN

種類は 数字 であることに注意してください。

properties/url

該当するプロパティ

  • URL

おわりに

今回作成したサンプルはこちらからダウンロードできます。Notionのテンプレートはこちらから複製できます。

初回実行時のみインテグレーションのシークレットとデータベースIDを聞かれます。あらかじめ準備してからお試しください。またこのShortcutでは2つのAPIを使用しており、こちらも初回のみそれぞれ許可を求められます。

いかがでしたでしょうか。ShortcutsでNotionの本棚に書籍情報を登録するための手順を書いてみました。このショートカットを作ってからは自分の部屋にある本をすべて本棚に登録したり、書店にでかけた時に気になる本をその場でサッと登録できたりするため、読書メモがはかどるようになりました。

Notionで書籍を管理する利点があります。それは、読書メモとリンクさせやすくなるという点です。読書中に気になったことをメモするときに書籍ごとにメモを書いていると、思い出す時には書いてあった本を思い出す必要があります。しかし、Notionにメモ用のデータベースを別に準備して本からメモにリンクを貼れば、メモはメモだけで見ることができるようになります。もちろん本にリンクを貼っているから本から辿ってメモを開いてもOKです。こうすることでよりうまく読書と付き合えるようになった感覚があります。

今回の内容は、NotionもShortcutsもiPhoneやMacを使っていればすべて無料で使うことができます。ハードルは少し高いですが、その分効果も高いのでぜひ試してみてください!

コメント

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