GASでNotionデータベースを操作!基本から応用まで
/ 初心者向け
GASでNotionデータベースを操作!基本から応用まで
Google Workspaceを日々活用されている皆さん、こんにちは!今回は、人気のある情報管理ツール「Notion」と、Googleが提供する業務自動化ツール「Google Apps Script (GAS)」を連携させる方法について、初心者の方にも分かりやすく解説していきます。
なぜGASでNotionを操作するのか?
Notionは非常に柔軟でパワフルなツールですが、GASと連携することで、さらにその可能性は広がります。例えば、以下のようなことが実現できます。
- Googleフォームからの回答をNotionデータベースに自動登録する
- スプレッドシートのデータを元にNotionデータベースのレコードを更新する
- Notionデータベースの特定条件のデータを抽出し、メールで通知する
- GASからNotionカレンダーにイベントを自動登録する
これらの自動化により、日々のルーチンワークを効率化し、より創造的な業務に集中できるようになります。
Notion APIの概要
GASからNotionデータベースを操作するには、Notionが提供する「Notion API」を利用します。Notion APIは、RESTful APIであり、HTTPリクエストを送信することで、データベースの読み取り、書き込み、更新、削除などが可能です。
GASでAPI連携を行う場合、主にUrlFetchAppサービスを使用します。
事前準備:Notion APIキーの取得
まず、Notion APIを利用するための「インテグレーション」(APIキー)を作成する必要があります。以下の手順で取得してください。
1. Notionの「Settings & members」から「Integrations」を選択します。
2. 「New integration」ボタンをクリックし、Internal Integrationを選択します。
3. 「Select the workspace」で連携したいワークスペースを選択します。
4. 「Continue」をクリックし、表示された「Internal Integration Token」がAPIキーになります。このトークンは誰にも共有しないように注意してください。
5. 次に、GASから操作したいNotionデータベースのページを、作成したインテグレーションに共有(「Share」ボタンから)する必要があります。
GASでNotionデータベースのデータを取得する
ここでは、GASを使ってNotionデータベースのレコードを取得する基本的なコード例を紹介します。
まず、GASエディタを開き、以下のコードを記述します。
function getNotionDatabaseData() {
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 fetching Notion data: ' + e);
return null;
}
}
コードの解説:
NOTION_API_KEY: 先ほど取得したNotion APIキーを設定します。DATABASE_ID: NotionのURLに含まれるデータベースIDを指定します。https://www.notion.so/yourworkspace/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=...のxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分です。url: Notion APIのデータベースクエリエンドポイントを指定します。options: HTTPリクエストのヘッダーとペイロードを設定します。AuthorizationヘッダーにAPIキーを、Notion-VersionにはAPIのバージョンを指定します。UrlFetchApp.fetch(): 指定したURLにHTTPリクエストを送信し、レスポンスを取得します。JSON.parse(): レスポンスのJSONデータをJavaScriptオブジェクトに変換します。
データを追加する
次に、Notionデータベースに新しいレコードを追加する方法です。
function addNotionDatabaseItem(properties) {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY';
const DATABASE_ID = 'YOUR_DATABASE_ID';
const url = `https://api.notion.com/v1/pages`;
const payload = {
'parent': {
'database_id': DATABASE_ID
},
'properties': properties
};
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('Item added successfully: ' + response.getContentText());
return JSON.parse(response.getContentText());
} catch (e) {
Logger.log('Error adding item to Notion: ' + e);
return null;
}
}
// 使用例:テキストとセレクトプロパティを持つデータベースにアイテムを追加
function exampleAdd() {
const newItemProperties = {
'Name': {
'title': [
{
'type': 'text',
'text': {
'content': 'GASから追加したタスク'
}
}
]
},
'Status': {
'select': {
'name': 'ToDo'
}
}
};
addNotionDatabaseItem(newItemProperties);
}
properties引数には、Notionデータベースのカラム構造に合わせたJSONオブジェクトを渡します。上記例では、「Name」がタイトル(テキスト)、「Status」がセレクトプロパティのデータベースを想定しています。
まとめ
GASとNotion APIを組み合わせることで、業務の自動化と効率化は大きく進みます。今回ご紹介したデータの取得と追加は、Notion APIの基本ですが、これを応用することで、より複雑な処理も実現可能です。
ぜひ、皆さんのNotion活用にGASを取り入れてみてください!次回は、データの更新や削除、より高度なクエリについて掘り下げていきます。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。