GASでNotionデータベースを操作!基本から応用まで
/ 初心者向け
NotionデータベースをGASで操作しよう!
Notionは多機能で柔軟なデータベース機能が魅力ですが、「あのデータをGASで取得してスプレッドシートにまとめたい」「GASからNotionに自動で情報を登録したい」といったニーズも多いのではないでしょうか。
今回は、Google Apps Script (GAS) を使ってNotionデータベースを操作する方法を、初心者の方にも分かりやすく解説していきます。
Notion APIの概要と準備
GASからNotionを操作するには、Notionが提供するAPIを利用します。具体的には、Notion APIの「Integration」を作成し、APIキーを取得する必要があります。
1. Notionの「Settings & Members」にアクセス
2. 「My integrations」タブを選択
3. 「New integration」ボタンをクリック
4. 「Associated workspace」や「Development name」などを入力し、「Send internal integration」をクリック(ワークスペースのオーナーである必要があります)。
5. 発行された「Internal Integration Token」をコピーします。これがAPIキーとなります。
次に、操作したいNotionデータベースのページで、作成したIntegrationにアクセス権を付与します。「Share」ボタンから「Invite」で、作成したIntegration名を選択してください。
GASでの基本的な操作
GASからNotion APIへリクエストを送信するには、UrlFetchApp サービスを使用します。HTTP POSTメソッドで、APIエンドポイントと必要なヘッダー、ボディを送信します。
データベースからデータを取得する
データベースの全データを取得するには、databases/{database_id}/query エンドポイントを使用します。database_id は、NotionのURLに含まれるIDです。
function getNotionData() {
const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここに取得した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);
// ここで取得したデータを加工してスプレッドシートなどに書き込む処理を実装
} catch (e) {
Logger.log('Error: ' + e.toString());
}
}
payload には、クエリ条件を指定することも可能です。例えば、特定のプロパティでフィルタリングしたり、ソート順を指定したりできます。
データベースにデータを追加する
新しいページ(レコード)を追加するには、pages エンドポイントを使用します。parent には、追加先のデータベースIDを指定します。
function addNotionPage() {
const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN';
const DATABASE_ID = 'YOUR_DATABASE_ID';
const url = 'https://api.notion.com/v1/pages';
const payload = {
'parent': { 'database_id': DATABASE_ID },
'properties': {
'Name': {
'title': [
{
'text': {
'content': '新しいタスク'
}
}
]
},
'ステータス': {
'select': {
'name': '未着手'
}
}
}
};
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);
Logger.log(response.getContentText());
Logger.log('ページが正常に追加されました。');
} catch (e) {
Logger.log('Error: ' + e.toString());
}
}
properties の部分は、Notionデータベースのプロパティ名と型に合わせて記述する必要があります。'Name' はデフォルトのタイトルプロパティ、'ステータス' はカスタムプロパティの例です。
データベースのページを更新する
既存のページを更新するには、pages/{page_id} エンドポイントを使用します。page_id は更新したいページのIDです。
データベースのページを削除する
ページを削除するには、pages/{page_id} エンドポイントにDELETEメソッドでリクエストを送信します。
まとめ
GASとNotion APIを組み合わせることで、Notionデータベースのデータを活用した様々な自動化が可能になります。今回ご紹介した基本操作をマスターすれば、あなたのNotion活用がさらに広がるはずです。ぜひ、色々な自動化に挑戦してみてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。