久しぶりに更新です。
忙しすぎて記事更新に充てる時間が全くなく、更新が数ヶ月止まっています。。重なる時は重なるものですよね笑
少し落ち着きを見せたので、今回からはNotion APIについて、GASを利用してスプレッドシートに書き出したり、スプレッドシートから書き込んだりする方法を紹介していきたいと思います。
Notion APIを使うための事前準備
今回は第1回目なので、スタートとしてNotion APIを利用するための準備作業を説明していきます。
事前セッティングをして、APIを叩ける環境の準備までを説明していきます。
事前準備の全体像
主にステップは3つに分かれてます。今回のは全てNotion内の設定なので、GUIで処理でき特段難しくありません。(全くGASとか使わない範囲です)
- Step1
- Step2トークンを取得する
作成したインテグレーションからトークンを取得する
- Step3共有設定からインテグレーションを追加する
作成したインテグレーションにDBへのアクセス権限を付与する
Step1 インテグレーションを作成する
まずは、トークン発行等のため、インテグレーションを作成していきます。
【サイドバー:設定】→【ポップアップ画面:インテグレーション】→【独自のインテグレーションを開発する】→【新しいインテグレーションを作成する】→
スクリーンショットつけながら、解説していきます。
①【サイドバー:設定】→【ポップアップ画面:インテグレーション】で以下の画面に辿り着けます。

当該画面にたどり着いたら、【独自のインテグレーションを開発する】をクリックします。すると以下の画面に辿り着きますので、【新しいインテグレーションを作成する】をクリック。

そうすると、実際にインテグレーションを作成する以下の画面に遷移。

インテグレーションの名前と関連させたいワークスペースを選択して送信をすれば、インテグレーションの作成完了です。
Step2 トークンを取得する
送信が完了すると以下のような画面が現れます。

一番上部にあるトークンを表示させて、コピーして利用します。
ここで一点注意すべきは、インテグレーションの種類です。以下の2種類があります
内部インテグレーション
基本こちらを採用(デフォルト)
公開範囲:自分が管理者のワークスペースでのみ利用可能
パブリックインテグレーション
Notion user全員に公開したいインテグレーションを作成した場合以外利用しない
公開範囲:Notionユーザ全て
step3 共有設定からインテグレーションを環境に追加する
最後にこれまで作成したインテグレーションを自分の環境に紐づける作業です。実はこれ忘れられやすいので、ご注意を。作業は非常に簡単です。
【共有】→【メール、ユーザ、インテグレーションを追加…】から対象のインテグレーションを選択して、招待ボタンをクリック。

作業自体はインテグレーション作成してすぐにスクリプト作成に移行して、エラーが出るって悩んでる方がいたのでご注意を。
Notion APIを実際に使って動作するかのテスト(GASスクリプト)
実際に先ほど作ったインテグレーション及びトークンを利用して、データベースのプロパティを取得してみます。
ターゲットは以下のようなDBです

DB_idをURLから取得して、以下のようなGASスクリプトを準備します。
const secret = "XXX";
function getDatabase_data() {
const db_id = "XXXX";
const base_url = "https://api.notion.com/v1/databases/" + db_id;
const options = {
"method": "get",
"headers":{
'Content-Type': "application/json",
'Authorization': 'Bearer ' + secret,
'Notion-Version': '2022-06-28',
}
};
let res = UrlFetchApp.fetch(base_url, options);
let tables = JSON.parse(res.getContentText());
Logger.log(tables);
}
実行すると、以下のようなDBのプロパティデータが取得できます(あくまでプロパティだけで、DBのtableコンテンツは含まれません)
/*
{last_edited_time=2022-09-07T07:52:00.000Z, parent={workspace=true, type=workspace}, created_by={id=0083e192-eaed-4c21-adf2-ec23d9f8bb6e, object=user}, properties={会社名={title={}, id=title, name=会社名, type=title}, URL={url={}, id=DnIe, type=url, name=URL}, status={type=multi_select, multi_select={options=[{color=purple, name=進行中, id=27e30346-5ab3-49a8-a1c6-2408581c5759}, {id=954ede38-5c18-4c93-9ada-3f2de8b8eff5, name=完了, color=orange}, {name=A読み, color=yellow, id=1ed2fae7-6ec4-4484-8073-aa1f4643a99d}]}, name=status, id=dqM%40}, ID={id=%3Bp%5Cb, type=number, number={format=number}, name=ID}}, object=database, cover=null, last_edited_by={object=user, id=0083e192-eaed-4c21-adf2-ec23d9f8bb6e}, description=[], icon=null, archived=false, url=https://www.notion.so/61099fb236f04536b206b73506eedbb9, id=61099fb2-36f0-4536-b206-b73506eedbb9, created_time=2022-09-05T16:43:00.000Z, title=[{text={content=test_db, link=null}, annotations={color=default, underline=false, code=false, bold=false, strikethrough=false, italic=false}, plain_text=test_db, href=null, type=text}], is_inline=false}
*/
ここまでこれば、とりあえず動作確認はOKです。お疲れ様でした
まとめ
今回は、【Notion APIを利用してスプレッドシートと連携させる方法〜Notion APIの準備〜】ということで、インテグレーションの作成方法やトークンの取得方法を紹介しました。
忘れやすいワークスペースへの共有(環境への追加設定)を怠ると、正しくスクリプト準備しても動きませんので、ご注意を。
それでは、次回以降で実際のDBのデータを取得したり、書き込んだりする、いわゆるCRUD的な部分を説明していきたいと思います。
では、また次回をお楽しみに。