こんにちは。AMDlabの掛田です。
今回はGoogle Apps Script(以下GAS)を使って、
Google Driveのファイル一覧をNotion APIを用いてNotionのデータベースに登録することで、Google DriveにどういうファイルがあるかをNotion上で見られるようにしてみます。
今回の記事の使用ケースとしては、情報管理にNotionを使用していて、ファイル管理にGoogle Driveを使用している場合に、Notionに情報が集約されることで便利になる内容になっています!
GASでは書いたプログラム自体をバッチ処理のようなイメージで何時間おき、何分おきと実行間隔を設定できるので、
一定の間隔でプログラムを実行し、Google DriveとNotionにファイルデータの差分があれば自動でNotionに登録させる動きにします。
※今回はあくまでどういうファイルがあるかだけを登録するので、実際のファイルをみるときはNotionに登録するファイルのリンクからGoogle Driveを参照する必要があります。
GASとは?
Googleが提供しているプラットフォームで、JavaScriptベースで記述されたプログラムを手軽に実行できます。
また、GoogleドキュメントやGoogleスプレッドシート等のGoogleの各種サービスと連携するプログラムが作りやすいという特徴があります。
GAS上でプログラムを実行できるので、手元に開発環境を揃える必要はありません。
GASの事前準備
Google Driveにアクセスし、右上の「新規」ボタンを押すとメニューが出るので、
「その他 > Google Apps Script」を選択し、GASのプロジェクトを作成します。
必要な情報の事前準備
今回の記事のプログラムでは以下3種類の情報を事前に取得しておく必要があります。
- Google DriveのフォルダID
- Notion APIのシークレット
- NotionのデータベースID
Google DriveのフォルダID
今回のプログラムの対象とするフォルダIDをGoogle Driveから取得したいので、
Google Driveで対象のフォルダを開きます。
URLをみてみると、URL後半のfolders/以降にランダムな文字列があり、これがフォルダIDです。
Notion APIのシークレット
添付の画像の手順でAPIのシークレットを作成し、取得します。
↓
↓
↓
NotionのデータベースID
Notionで対象のデータベースをフルページで表示し、リンクを取得します。
リンクは以下のような形式で、手前のランダム文字列がデータベースIDです。
https://www.notion.so/{ランダム文字列}?v={ランダム文字列}&pvs=4
Notionの事前準備
先程フルページで表示していたデータベースのページで、ページ右上の三点リーダーからコネクトの設定をおこないます。
Notion APIを作成時に設定した名前が選択肢にあるはずなので、そちらを選択すると
Notion APIを用いてデータベースの情報を取得・登録がおこなえるようになります。
この設定を省いてしまうと、Notion APIをプログラムから使用してもエラーになってしまいます。
GASで書いたプログラムについて
Notion側のデータベースには以下のプロパティは2種類を用意しました。
- ファイル名(プロパティ種別:タイトル)
- URL(プロパティ種別:URL)
この2種類のプロパティを持つデータを1レコードとしてプログラムから登録できるようにします。
全体の流れ
- Google Drive上の特定のフォルダに入っているファイルを、子階層も含めて全て取得する(取得関数を再帰的に実行することで子階層も取得します)
- Notion上のデータベースに入っているファイルを全て取得する
- 1で取得したファイル一覧と2で取得したファイル一覧の中身を比較し、Notionのデータベースに未登録のファイルを抽出する
- 3で取得した未登録のファイル一覧をNotion APIでNotionのデータベースに登録する
実際のプログラム
関数は大きく分けて4つ作成しました。
- myFunction()
- getFilesRecursiveFromDrive(フォルダID)
- getFilesFromNotion()
- addFileToNotion(ファイル名, ファイルURL)です。
myFunction()をメイン処理とし、他の関数を呼ぶなど全体の流れを記述しました。
ほとんどはJavaScriptの構文ですが、GASではAPIのコールにはUrlFetchAppというクラスを使用するようでした。
Notion APIをコールする際にヘッダーに指定しているNotion-Version
はNotionのAPIバージョンの指定で、2022-06-28が現時点では最新のようです。
プログラムの実行タイミングを設定
GASの左のサイドバーからトリガー(実行タイミング)を設定できます。
今回は5分間隔でmyFunctionを実行するよう設定してみました!
……5分後
Notionにファイル情報が登録されていることが確認できました。
もっと欲をいうとNotionに登録する際にGoogle Driveのフォルダ構造を保ちつつ登録できたらベストなのですが、、、
締め
今回はGASでGoogle Driveのファイル一覧でNotionで見られるようにするプログラムを書いてみました。
GASでは他にもGoogleスプレッドシートやGoogleフォームなど連携できるサービスは多そうです。
アイデア次第でさまざまな使い方ができるので、Googleのサービスと連携しつつ自動で何かを実現したいときに選択肢の1つとして考えていただければと思います!
COMMENTS