GASでNotionデータベースを自在に操る!基本から応用まで
/ 初心者向け
GASでNotionデータベースを自在に操る!基本から応用まで
こんにちは!GAS専門ブロガーの〇〇です。
今回は、多くの人が利用している情報管理ツール「Notion」のデータベースを、Google Apps Script (GAS) を使って操作する方法について、初心者の方にも分かりやすく解説していきます。GASとNotionの連携は、日々の業務効率を劇的に向上させる可能性を秘めています。ぜひ最後までお付き合いください!
なぜGASでNotionを操作するのか?
Notionは非常に高機能なツールですが、GASと連携させることで、さらにその可能性を広げることができます。
- 自動化: 定期的にデータを更新したり、特定の条件でレコードを追加したりといった作業を自動化できます。
- 外部連携: Googleスプレッドシートや他のGoogleサービスからNotionデータベースへデータを連携させたり、逆にNotionのデータを外部サービスへ連携させたりできます。
- カスタム機能: Notion単体では実現できないような、独自の集計や分析、通知機能などをGASで実装できます。
Notion APIの基本
GASからNotionデータベースを操作するには、Notionが提供するAPIを利用します。現在、Notion APIはv0とv1がありますが、一般的にはv1を利用します。
1. Notion Integrationの作成
GASからNotion APIにアクセスするには、まず「Integration」を作成する必要があります。これは、APIリクエストの際に使用する認証トークンを発行する手続きです。
1. NotionのMy integrationsページにアクセスします。
2. 「+ New integration」ボタンをクリックします。
3. 「Internal Integrations」を選択し、必要な情報を入力して「Submit」をクリックします。
4. 作成されたIntegrationの詳細ページで、「Secret token」をコピーしておきます。これは非常に重要なので、安全な場所に保管してください。
2. データベースへのアクセス権限の付与
作成したIntegrationに、操作したいNotionデータベースへのアクセス権限を付与する必要があります。
1. 操作したいNotionデータベースを開きます。
2. 右上にある「・・・」メニューをクリックします。
3. 「Connect to ...」セクションの「Add connections」をクリックします。
4. 検索バーに、先ほど作成したIntegrationの名前を入力し、選択します。
5. 「Allow access」をクリックして、権限を付与します。
GASでNotionデータベースを操作する
それでは、具体的なGASのコードを見ていきましょう。GASのUrlFetchAppサービスを使って、Notion APIにHTTPリクエストを送信します。
1. データベースのIDの取得
Notion APIでデータベースを操作するには、データベースのIDが必要です。データベースのURLから取得できます。
例えば、データベースのURLが https://www.notion.so/xxxx-yyyy-zzzz-aaaa-bbbbccccdddd の場合、データベースIDは xxxx-yyyy-zzzz-aaaa-bbbbccccdddd です。
2. データベースの全ページを取得する
まずは、データベースに登録されているすべてのページ(レコード)を取得するコードです。
function getAllPages() {
const NOTION_API_KEY = 'YOUR_NOTION_SECRET_TOKEN'; // 作成したSecret token
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);
}
}
3. 新しいページ(レコード)を追加する
データベースに新しいレコードを追加する例です。
function createPage() {
const NOTION_API_KEY = 'YOUR_NOTION_SECRET_TOKEN';
const DATABASE_ID = 'YOUR_DATABASE_ID';
const url = 'https://api.notion.com/v1/pages';
const payload = {
'parent': {
'database_id': DATABASE_ID
},
'properties': {
'名前': {
'title': [
{
'text': {
'content': '新しいタスク'
}
}
]
},
'ステータス': {
'select': {
'name': 'ToDo'
}
},
'期日': {
'date': {
'start': '2023-12-31'
}
}
}
};
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(data);
} catch (e) {
Logger.log('Error: ' + e);
}
}
注意点: 上記のコードでは 名前, ステータス, 期日 というプロパティ名を例として使用していますが、ご自身のNotionデータベースのプロパティ名に合わせて適宜変更してください。
4. 既存のページを更新する
既存のページ(レコード)の情報を更新するには、ページのIDと更新したい内容を指定します。
function updatePage() {
const NOTION_API_KEY = 'YOUR_NOTION_SECRET_TOKEN';
const PAGE_ID = 'YOUR_PAGE_ID'; // 更新したいページのID
const url = `https://api.notion.com/v1/pages/${PAGE_ID}`;
const payload = {
'properties': {
'ステータス': {
'select': {
'name': '完了'
}
}
}
};
const options = {
'method': 'patch',
'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(data);
} catch (e) {
Logger.log('Error: ' + e);
}
}
5. ページを削除する
ページを削除するには、そのページのIDを指定してDELETEリクエストを送信します。ただし、Notion APIでは直接的な「削除」機能は提供されていません。代わりに、アーカイブ(非表示)する機能を利用します。
function archivePage() {
const NOTION_API_KEY = 'YOUR_NOTION_SECRET_TOKEN';
const PAGE_ID = 'YOUR_PAGE_ID'; // アーカイブしたいページのID
const url = `https://api.notion.com/v1/pages/${PAGE_ID}`;
const payload = {
'archived': true
};
const options = {
'method': 'patch',
'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(data);
} catch (e) {
Logger.log('Error: ' + e);
}
}
まとめ
今回は、GASを使ってNotionデータベースの基本的な操作(取得、追加、更新、アーカイブ)を行う方法を解説しました。これらの基本をマスターすれば、さらに複雑な自動化や連携が可能になります。
- Notion Integrationの作成とAPIキーの管理
- データベースIDとページIDの取得方法
UrlFetchAppを使ったAPIリクエストの送信
これらの知識を活かして、あなたのNotion活用をさらに進化させていきましょう!
次回は、より実践的な「GASでNotionデータベースからデータを取得してGoogleスプレッドシートに集計する」といった応用編をお届けする予定です。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。