GASでNotionデータベースを自在に操作!入門ガイド
/ 初心者向け
GASでNotionデータベースを自在に操作!入門ガイド
皆さんは普段、Notionをどのように活用されていますか?ドキュメント作成、タスク管理、データベースとして…と、その用途は多岐にわたります。
今回は、そんなNotionのデータベースを、Google Apps Script (GAS) を使ってプログラムから操作する方法をご紹介します。
GASを使えば、例えば「Googleフォームで集めた情報をNotionデータベースに自動登録する」「GASで処理した結果をNotionに記録する」「GASでNotionのデータを集計してスプレッドシートに表示する」といった、様々な自動化や連携が可能になります。
なぜGASでNotionを操作するのか?
- 自動化の促進: 定型的なデータ入力や更新作業を自動化し、作業効率を劇的に向上させます。
- 他サービスとの連携: Googleフォーム、Gmail、スプレッドシートなど、GASで連携できる他のGoogleサービスとNotionを繋げることができます。
- カスタムワークフローの構築: 独自のビジネスロジックに基づいたデータ処理や、Notionのデータを活用したカスタムアプリケーションの開発が可能です。
Notion APIの基本
GASからNotionデータベースを操作するには、Notionが提供するAPIを利用します。Notion APIは、RESTful APIとなっており、HTTPリクエスト(GET, POST, PATCH, DELETEなど)を使ってデータベースの操作を行います。
必要なもの
1. Notion Integration Token: Notionの「My integrations」ページで取得できます。このトークンがAPIへのアクセス認証に使われます。
2. Notion Database ID: 操作したいデータベースのIDです。URLの末尾にある長い英数字の文字列です。
GASでNotionデータベースにアクセスしてみよう!
まずは、GASでNotionデータベースからデータを取得する基本的なコードを見てみましょう。
1. データベースの全件取得
function getAllDatabaseItems() {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // 取得したAPIキー
const DATABASE_ID = 'YOUR_DATABASE_ID'; // 操作したいデータベースID
const url = `https://api.notion.com/v1/databases/${DATABASE_ID}/query`;
const options = {
'method': 'post',
'headers': {
'Authorization': `Bearer ${NOTION_API_KEY}`,
'Content-Type': 'application/json',
'Notion-Version': '2022-06-28' // 最新のAPIバージョンを指定
},
'payload': JSON.stringify({})
};
try {
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
Logger.log(data);
return data;
} catch (e) {
Logger.log('Error: ' + e);
return null;
}
}
コードの解説:
NOTION_API_KEYとDATABASE_IDは、ご自身のものに置き換えてください。https://api.notion.com/v1/databases/${DATABASE_ID}/queryが、データベースのデータを取得するためのAPIエンドポイントです。headersには、認証情報(APIキー)とAPIバージョンを指定します。payloadは、今回は空で送信していますが、フィルタリングやソートを行う際に利用できます。
2. データベースに新規アイテムを追加する
新しいページ(アイテム)をデータベースに追加するには、POSTリクエストを使います。
function addDatabaseItem() {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY';
const DATABASE_ID = 'YOUR_DATABASE_ID';
const url = `https://api.notion.com/v1/pages`;
const itemTitle = 'GASから追加したアイテム'; // 追加するアイテムのタイトル
const propertyName = 'Name'; // Notionデータベースのタイトルプロパティ名
const payload = {
'parent': { 'database_id': DATABASE_ID },
'properties': {
[propertyName]: {
'title': [
{
'text': {
'content': itemTitle
}
}
]
}
// 他のプロパティもここに追加できます
// 'Status': {
// 'select': {
// 'name': 'To Do'
// }
// }
}
};
const options = {
'method': 'post',
'headers': {
'Authorization': `Bearer ${NOTION_API_KEY}`,
'Content-Type': 'application/json',
'Notion-Version': '2022-06-28'
},
'payload': JSON.stringify(payload)
};
try {
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
Logger.log('アイテムが追加されました: ' + JSON.stringify(data));
} catch (e) {
Logger.log('Error: ' + e);
}
}
コードの解説:
parent.database_idには、追加先のデータベースIDを指定します。propertiesオブジェクトの中に、Notionデータベースの各プロパティに対応するデータを記述します。上記の例では、タイトル(Nameプロパティ)のみを追加しています。- 他のプロパティ(Select、Date、Numberなど)を追加したい場合は、Notion APIのドキュメントを参照して、適切な形式で記述してください。
まとめ
今回は、GASを使ってNotionデータベースからデータを取得し、新しいアイテムを追加する方法を解説しました。
UrlFetchApp を使ってNotion APIにリクエストを送信することで、データベースの操作がプログラムから可能になります。
次回は、アイテムの更新や削除、より高度なフィルタリングやソートといった、さらに踏み込んだ内容について解説する予定です。ぜひ、GASとNotionの連携で、あなたのワークフローをさらに効率化してください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。