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

 

課題

蔵書を Notion のデータベースで管理していて、新しい書籍を購入するたびに手作業でぽちぽち入力していたが、以下の課題を感じていた。
  1. 単純に入力作業が面倒
  1. タイトルや著者を入力する際のフォーマットが統一できておらず、検索性が良くない
  1. 出版社等のカラムを新たに増やそうと思うと、途方もない手作業が発生しそうなのでやりたくない
 

やりたいこと

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

成果物のイメージ

Mermaid
 

やったこと

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

AppSheet アプリを作成する

 

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

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

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

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

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

  1. 以下のような property を持つデータベースを用意しておく
    1. Title
    2. Author
    3. Publisher
    4. PubDate
    5. ISBN
  1. 内部インテグレーションを作成し、token を控えておく
    1. Notion APIを使用したインテグレーションの作成
      ドキュメンテーションやリソース、インテグレーション管理ツールを利用できる 開発者向けサイト も併せてご覧ください。 ワークスペース管理者のみが インテグレーション タブへのアクセス、およびインテグレーションの作成を実行できます。管理者でない場合は、ワークスペース管理者に連絡するか、別のワークスペースを使用してください。 下部の 独自のインテグレーションを開発する リンクをクリックします。 デフォルトのブラウザで 私のインテグレーション が開きます。+ 新しいインテグレーション ボタンをクリックします。 内部インテグレーションが作成されました! ワークスペースの 設定 メニュー → 私のインテグレーション にこのインテグレーションが表示されます。 内部インテグレーションの隣の *** メニューをクリックして、トークンを取得します。このトークンは、APIベースの自動化やチームが作成したワークフローのために、またはワークスペースをパートナーのプラットフォームとリンクさせるために必要です。 新たに追加されたインテグレーションは、最初はすべて内部インテグレーションになります。パブリックインテグレーションに取り組んでいる開発者の方の場合、まず上記の手順に沿って内部インテグレーションを作成します。 その後、 開発者ガイド の手順に沿ってパブリックインテグレーションに変換してください。 アプリの設定の中で、開発者はユーザーに要求するアクセス権限のレベルを選択できます。 ユーザーがインテグレーションをインストールすると、このアクセスレベルが表示されます。また、インテグレーションが追加されたページの 共有 メニューにも表示されます。 ワークスペースへのインテグレーションのインストールについて詳しくはこちら →
  1. 内部インテグレーションをデータベースに付与する
    1. ページ右上の「共有」から、作成した内部インテグレーションを「招待」する

GAS を deploy する

openBD について

ソースコード

isbn2notion
barleyteaUpdated Jul 6, 2022