今回はGAS(Google Apps Script)に関して書いていきます。
以前もGASに関する記事を書いています(以下リンク)。
上記の記事の中から「GASでNotionからデータを取得する事前準備」の手順を抜粋して記事にしてみます。
というのも、今後もGASでNotion連携する記事を書いていく予定で、その事前準備の手順を毎回書くのもアレなので、その部分だけ独立した記事を書いておこうかなと。
それでは本題へ。
前提情報
Notionとは?
Notionとはアメリカ・サンフランシスコを拠点とするスタートアップ企業Notion Labsが開発した多機能ドキュメントツールです。プロジェクト管理やスケジュール管理、社内wikiなど目的に応じて使い分けられるさまざまなドキュメントを集約できるため「オール・イン・ワンツール」と呼ばれています。
出典:【万能アプリ】Notionとは?何がスゴイ?使い方や活用事例、料金などについてわかりやすく解説 - 2023/12/08 [Schoo]
詳しくは以下のサイトを見て頂ければと。
schoo.jpwww.sbbit.jp
Notion APIとは?
Notion API は Notion と外部のツール(Google、Microsoft 、Slack、LINE、ChatGPT など)を繋げてデータの受け渡しをしたり、Notion 内のワークフローを自動化することができるインターフェースです。API は、アプリケーション・プログラミング・インタフェース (Application Programming Interface)の略語です。
インターフェースと聞くと難しく感じますが、パソコンとマウスを繋ぐ USB もインターフェースの一種で、簡単に言うと「何か」と「何か」を「繋ぐもの」です。Notion API の場合は「Notion」と「外部の Web サービスやツール」を繋ぐインターフェースです。
ちなみに Notion API は無料で使用することができます。
詳しくは以下のサイトを見て頂ければと。
notion-lab.jpn-v-l.cobiz-notion.northsand.co.jp
Notion APIを使う準備
GASでNotionからデータを取得するためには、事前準備が必要です。
今回の例では、GASでラジオ管理Notionからデータ取得できるようにします。
※Notionアカウントを持っている前提です。
インテグレーション作成
インテグレーションを作成します。
ここで作成したAPIキーをプログラムに記述します。
※名前はお好みで
※「表示」→「コピー」でシークレットキーをコピーできます
コネクト
先ほど作成したインテグレーションと、GASからデータ取得したいNotionデータベースを紐づけます。
※今回はラジオ管理Notion
※「…」→「接続先」→「ラジオ管理Notion」
データベースIDを控える
NotionデータベースのIDを控えておきます。
ここで控えたデータベースIDをプログラムに記述します。
※「yyyyyyyyyy」はビューID
スクリプト プロパティ設定
スクリプト プロパティを設定します。
先ほど控えた「インテグレーションキー」や「データベースID」を登録します。
この作業は必須ではないですが、やっておいた方がセキュリティ面で安全かなと思います。
今回は以下2つを登録しています。
プロパティ | 説明 |
---|---|
NOTION_API_KEY | 先ほど作成したインテグレーション |
DATABASE_ID | 先ほど控えたNotionデータベースID |
「スクリプト プロパティ」に関しては別記事を書いています。
こちらも良ければぜひ。
miya-moto-memo.hatenablog.com
プログラム
準備が整ったところで、プログラムです。
Notionからデータが取得できるか、接続テストをしてみます。
// Notionインテグレーションキー const NOTION_API_KEY = PropertiesService.getScriptProperties().getProperty('NOTION_API_KEY'); // ラジオ管理NotionのデータベースID const DATABASE_ID = PropertiesService.getScriptProperties().getProperty('DATABASE_ID'); /** * メイン処理 */ function main() { // Notion検索URL const url = 'https://api.notion.com/v1/databases/' + DATABASE_ID + '/query'; // データ取得に必要なパラメータを組み立てる const payload = { 'filter': { 'property': '曜日', 'multi_select': { 'contains': '月' } } }; const params = { 'method': 'POST', 'headers': { 'Notion-Version': '2022-06-28', 'Authorization': 'Bearer ' + NOTION_API_KEY, 'Content-Type': 'application/json' }, 'payload': JSON.stringify(payload), }; // Notion検索実行 const result = JSON.parse(UrlFetchApp.fetch(url, params)); for (const data of result.results) { // 番組名を取得 let title = data.properties['番組名'].title[0].plain_text; // ログ出力 console.log(title); } }
上記のプログラムを実行して、ラジオ管理Notionからデータ取得できました。
Notion検索時に「曜日=”月”」でフィルターするように設定しており、フィルターされたデータが取得できました。
取得したデータの中から「番組名(タイトルプロパティ)」をログ出力しています。
今回はNotionデータベースの接続テストなので、プログラムの詳しい説明は割愛します。
おわりに
ということで、「GASでNotion APIを使う準備(インテグレーション、コネクト、Notion接続テスト)」に関してアレコレ書いてみました。
今後もGASでNotion連携する記事を書いていく予定なので、事前準備のフェーズは今回の記事をリンクしておけばOKになるかなと思っています。
GASでNotion連携する際の第一歩としても参考になるかなと思います。
この記事が参考になれば幸いです。