GASでNotionデータベースを自在に操作!基本から応用まで
/ 初心者向け
NotionデータベースをGASで操作しよう!
Notionは非常に柔軟でパワフルなツールですが、さらにGAS(Google Apps Script)と連携させることで、その可能性は無限大に広がります。例えば、「Googleフォームに回答があったらNotionデータベースに自動登録する」「GASで生成したレポートをNotionに格納する」といった自動化が実現できます。
この記事では、GASを使ってNotionデータベースを操作するための基本的な方法から、少し応用的な使い方までを、初心者の方にも分かりやすく解説していきます。
Notion APIの準備
GASからNotionデータベースを操作するには、NotionのIntegration機能を利用します。まずは、NotionでAPI Integrationを作成しましょう。
1. Notionの「Settings & Members」から「My integrations」にアクセスします。
2. 「New integration」ボタンをクリックします。
3. Integrationの名前を入力し、Workspaceを選択します。
4. 「capabilities」で「Read」と「Insert」にチェックを入れます。(必要に応じて「Update」や「Delete」も追加できます)
5. 「Submit」をクリックすると、API Keyが表示されるので、これをコピーして安全な場所に保管しておきましょう。
次に、作成したIntegrationを操作したいNotionデータベースに「Share」から招待します。
GASでの基本操作:データベースの全件取得
GASでNotion APIを呼び出すには、UrlFetchAppサービスを利用します。APIエンドポイントは https://api.notion.com/v1/databases/{database_id}/query です。{database_id} は対象のデータベースIDに置き換えてください。
function getNotionDatabase() {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // ここにAPI Keyを入力
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'
}
};
try {
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
Logger.log(json);
return json;
} catch (e) {
Logger.log('Error: ' + e.toString());
}
}
上記のコードの YOUR_NOTION_API_KEY と YOUR_DATABASE_ID を、先ほど取得したAPI Keyと対象のデータベースIDに置き換えて実行してください。Logger.log(json) で取得したデータを確認できます。データベースIDは、NotionのURLの https://www.notion.so/yourworkspace/DATABASE_ID?v=... の部分にあります。
データの追加:新しいページを作成する
新しいページを作成するには、https://api.notion.com/v1/pages エンドポイントにPOSTリクエストを送ります。
function addPageToNotion() {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // ここにAPI Keyを入力
const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここにデータベースIDを入力
const url = 'https://api.notion.com/v1/pages';
const payload = {
'parent': {
'database_id': DATABASE_ID
},
'properties': {
'名前': {
'title': [
{
'text': {
'content': 'GASから追加したページ'
}
}
]
},
'ステータス': {
'select': {
'name': 'ToDo'
}
}
// 他のプロパティもここに追加できます
}
};
const options = {
'method': 'post',
'headers': {
'Authorization': `Bearer ${NOTION_API_KEY}`,
'Content-Type': 'application/json'
},
'payload': JSON.stringify(payload)
};
try {
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
} catch (e) {
Logger.log('Error: ' + e.toString());
}
}
payload オブジェクト内の properties は、Notionデータベースのプロパティ名と値に合わせて適切に記述する必要があります。プロパティの型(Title, Select, Dateなど)によってJSONの構造が変わるので注意してください。詳細はNotion APIのドキュメントを参照すると良いでしょう。
まとめ
GASとNotion APIを組み合わせることで、日々の業務を劇的に効率化できます。今回紹介した全件取得とページ追加は、基本的な操作ですが、これらを応用すれば、以下のような自動化も夢ではありません。
- Googleフォームと連携: フォーム回答をNotionデータベースに自動追加。
- Googleスプレッドシートと連携: スプレッドシートのデータをNotionに同期。
- メール自動送信: Notionのステータス変更をトリガーにメールを送信。
まずは、今回紹介したコードを試してみて、Notionデータベースへのアクセスに慣れてみてください。さらに高度な操作(ページ更新、削除、プロパティの検索など)もAPIで可能ですので、ぜひNotion APIの公式ドキュメントも参照しながら、色々な自動化に挑戦してみてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。