スマホカメラで ISBN を読み取って書誌情報を Notion の DB に追加する

2023-01-13

thumbnail

目次

課題

蔵書を Notion のデータベースで管理していて、新しい書籍を購入するたびに手作業でぽちぽち入力していたが、以下の課題を感じていた。

  1. 単純に入力作業が面倒
  2. タイトルや著者を入力する際のフォーマットが統一できておらず、検索性が良くない
  3. 出版社等のカラムを新たに増やそうと思うと、途方もない手作業が発生しそうなのでやりたくない

やりたいこと

  1. ISBN から書誌情報を取得して、そのまま Notion のデータベースに入れられるようにする
  2. ISBN の手入力はどう考えても面倒なので、カメラでバーコードを読み取って入力できるようにする

処理イメージ

NotionAppSheet ServeropenBDGASAppSheet ClientNotionAppSheet ServeropenBDGASAppSheet ClientUserISBNを登録1webhookでISBNをPOST2書誌情報を検索3書誌情報を返却4AppSheet APIで書誌情報を保存5Notion APIで書誌情報を保存6User

やったこと

Spreadsheet を準備する

  1. 新しく Google Spreadsheet を作成する
    1. Spreadsheet 名 : isbn2notion
    2. sheet 名: books
    3. カラム名
      1. ID
      2. isbn
      3. title
      4. publisher
      5. pubdate
      6. cover
      7. author
      8. created_at

SpreadSheet 設定

AppSheet アプリを作成する

AppSheetから新規アプリを作成し Columns の設定を行う

  1. Make a new appStart with your own dataと選択し、App nameには任意の名前を入力する
  2. Choose your dataを押下し、上記で設定した Spreadsheet 名を選択し、Selectを押下する
  3. App が作成されたら画面左カラムからDataColumnsと遷移し、上記で設定した Spreadsheet 内の sheet 名(books)を選択した上で、以下のように各項目を修正する AppSheet 列設定

AppSheet Workflow 機能から GAS を kick する設定を行う

  1. AppSheet の画面左カラムからAutomationBotsと遷移する
  2. New Botを押下し、name としてWhen a books record is created, updated, or deleted, send a notificationを指定する
    1. // TODO: ちょっと hacky な手順に見えるので、正攻法を確認すること
  3. Event の中身は以下のように設定する AppSheet Event 設定
  4. Processesタブに遷移してtableとしてbooksを選択し、新しいtaskを作成する。taskの中身は以下のように設定する AppSheet Task 設定
  5. Botsタブに戻り、作成したtaskeventに紐付ける
  6. 画面左カラムのManageIntegrationsIN: from cloud services to your appEnableにする
  7. Create Application Access Keyを押下し、新しく Application Access Key を発行する
  8. Show Access Keyを押下して表示される文字列とApp Idを控えておく

Notion のデータベースを準備する

  1. 以下のような property を持つデータベースを用意しておく
    1. Title
    2. Author
    3. Publisher
    4. PubDate
    5. ISBN

Notion データベース列設定

  1. 内部インテグレーションを作成し、token を控えておく Notion APIを使用したインテグレーションの作成

  2. 内部インテグレーションをデータベースに付与する

    1. ページ右上の「共有」から、作成した内部インテグレーションを「招待」する

GAS を deploy する

$ clasp push

openBD について

openBD

ソースコード

https://github.com/barleytea/isbn2notion