OneDrive上のExcelとNotionを連携し、データベースの値を更新・公開する

こんにちは、長塚電話工業所の佐藤です。

大変ありがたいことに、弊社には日々大量のお問い合わせが入ってきています。その主な内容としては、

  • 製品の詳細について
  • 製品の在庫状況について

これらがほとんどを占めています。

弊社は「カスタマーファースト」を謳っておりまして、お客様にとって分かりにくい、手間のかかることは可能な限り避けるようにしています。上記のようなお問い合わせをいただくことも、突き詰めればお客様にとって手間になっていると考えています。

ですが、そういった非常に細かい製品の仕様や、リアルタイムに変わっていく在庫状況をお客様に展開する術をこれまで持ち合わせておらず、色々なシステム会社様と打ち合わせを行っては、ああでもない、こうでもないと検討を続けてきました。

そこに「Notionの活用」という光が差し込んできたのです。

今回は、Microsoft Graph APIおよびNotion API、そしてPythonを使って実装を行いたいと思います。

今回のご紹介内容

  • OneDrive上の特定のファイル(Excel)を読み込み、シートの内容・セルの値を取得する
  • Notionとの連携
  • セルに記載されている数値に応じて、Notionのデータベースの値(タグ)を更新する

図解

図をご覧ください。まず、OneDrive上で管理・運用されている製品の在庫状況をプログラムで引っ張ってきます。その数値に応じて、Web上で公開するNotionデータベースのタグを「有」「僅少」「無」に自動的に変更するようにします。もちろん在庫状況だけではなく、それぞれの製品の画像や特徴、価格などと並行して記載することにより、お客様にとって便利なページになるのではないか?と考えました。

実装

Microsoft Graph API

上記プログラムは過去に解説および実装を行っています。詳細の確認はこちらから。

引っ張ってきたいファイルのIDを確認するところが肝です。

Notion API

引っ張ってくる対象のファイルおよびシートは、以下のようになっています。

B列に記載しているのは、その製品が記載されているNotion側ページのページIDです。

Notionにおけるデータベースというのはいわゆるページの集合で、APIを介して操作を行う際もページIDの指定がそれぞれ必要になります。

ページIDの取得については、こちらをご確認ください。

https://booknotion.site/setting-pageid

A1セルの値が「0」「0~20」「20」以上の場合それぞれに応じて、B1セルのページIDを持つNotionページの「在庫状況」タグを変更する、という処理になります。これを行の数だけ繰り返すので、for文が走っているわけです。

今回は3列のみですが、すべての数値が20以上になっています。つまり、プログラムを実行するとNotion側の在庫状況が全て「有」に変更されるはずです。

Notion API Key

API Keyの取得については、こちらをご確認ください。

https://www.notion.so/ja-jp/help/create-integrations-with-the-notion-api

実行してみる

プログラムを実行してみます。すると、、

自動でタグが変更されました!これを応用することで、例えば価格に変更があったとしてもNotion側をわざわざ書き換える必要は無く、親のExcelファイルを指定するだけで良くなりますね。拡張性・保守性に優れたプロダクトになってくれる予感…?

さいごに

今回は、OneDrive(Excel) x Notionの実装を行いました。記事についてご不明な点などがございましたら、当社HPのお問い合わせフォームよりお気軽にご連絡ください。

プログラム単体では1回の実行につき1回しか処理できませんので、AWSやGCPへのアップロードが必要になります。前回の別の記事では似たようなプログラムを移管する際にAWSを使用しましたが、Lambda関数への変換実装が面倒だった記憶があり、次回はGCPでの実装を検討しています。

こちらについても記事にする予定ですので、お楽しみに!

またこちらの製品データベースは鋭意作成・拡充中です。完成し次第、お客様へアナウンスさせていただきます。

画像に alt 属性が指定されていません。ファイル名: image-3.png

補足ですが、ビューのスタイルを選ぶこともできます。ギャラリーだと見やすくなりますね!もちろん検索機能も充実しています。本当に優秀です笑

今回は以上です。さいごまでお読みいただきありがとうございました!