Notion APIを利用してスプレッドシートと連携させる方法〜Notion APIの準備〜

notionAPI関連
この記事は約7分で読めます。

久しぶりに更新です。

忙しすぎて記事更新に充てる時間が全くなく、更新が数ヶ月止まっています。。重なる時は重なるものですよね笑

少し落ち着きを見せたので、今回からはNotion APIについて、GASを利用してスプレッドシートに書き出したり、スプレッドシートから書き込んだりする方法を紹介していきたいと思います。

スポンサーリンク
もしも_楽天

Notion APIを使うための事前準備

今回は第1回目なので、スタートとしてNotion APIを利用するための準備作業を説明していきます。

事前セッティングをして、APIを叩ける環境の準備までを説明していきます。

事前準備の全体像

主にステップは3つに分かれてます。今回のは全てNotion内の設定なので、GUIで処理でき特段難しくありません。(全くGASとか使わない範囲です)

Notion APIを利用するための事前準備

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的な部分を説明していきたいと思います。

では、また次回をお楽しみに。

タイトルとURLをコピーしました