GASでNotionデータベースを自在に操作!基本から応用まで
/ 初心者向け
GASでNotionデータベースを自在に操作!基本から応用まで
皆さんは日々の業務でNotionを活用されていますか? Notinonは非常に柔軟でパワフルなツールですが、「もっと自動化したい」「他のサービスと連携させたい」と感じたことはありませんか? そんな時、Google Apps Script (GAS) が強力な味方になります!
GASを使えば、Google SpreadsheetやGmailだけでなく、Notionデータベースもプログラムから操作することが可能です。本記事では、GASを使ってNotionデータベースを自在に操るための基本から、具体的なコード例までを、初心者の方にも分かりやすく解説していきます。
なぜGASでNotionを操作するのか?
GASでNotionデータベースを操作するメリットは多岐にわたります。
- 作業の自動化: 定期的なデータ入力、レポート作成、タスク管理などの定型業務を自動化できます。
- データ連携: Google Spreadsheetや他のWebサービスからNotionへデータをインポートしたり、逆にNotionのデータをエクスポートして分析したりできます。
- カスタムワークフローの構築: NotionのデータベースとGASを組み合わせることで、独自の業務フローを構築できます。
Notion APIの基本
GASからNotionを操作するには、Notionが提供するAPIを利用します。具体的には、REST APIと呼ばれる形式でHTTPリクエストを送信し、Notionサーバーとやり取りを行います。
1. Notionインテグレーションの作成
まず、GASからNotionにアクセスするための「インテグレーション」を作成する必要があります。これは、GASにNotionへのアクセス権限を与えるための鍵のようなものです。
1. NotionのMy integrationsページにアクセスします。
2. 「New integration」ボタンをクリックします。
3. インテグレーションの名前、連携させるWorkspaceを選択し、「Submit」をクリックします。
4. 「Internal Integration Token」が表示されます。このトークンは非常に重要なので、コピーして安全な場所に保管してください。このトークンは、GASからNotion APIを呼び出す際に認証情報として使用します。
2. NotionデータベースのIDの取得
操作したいNotionデータベースのIDも必要になります。データベースのURLを確認してください。URLは通常、以下のようになっています。
https://www.notion.so/<workspace-name>/<database-id>
<database-id>の部分が、GASで利用するデータベースIDです。こちらもコピーしておきましょう。
GASでNotionデータベースからデータを取得する
まずは、Notionデータベースからデータを取得する基本的な方法を見ていきましょう。
GASエディタを開き、以下のコードを記述します。
function readNotionDatabase() {
const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここにNotionインテグレーションのトークンを入力
const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここにNotionデータベースの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' // Notion 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);
}
}
YOUR_INTERNAL_INTEGRATION_TOKENとYOUR_DATABASE_IDを、先ほど取得した情報で置き換えてください。Notion-Versionは、APIの互換性を保つために指定することが推奨されています。最新のバージョンを確認して設定しましょう。options.payloadをJSON.stringify({})としているのは、全件取得するためです。特定の条件で絞り込みたい場合は、このpayloadにクエリ条件を指定します。
この関数を実行すると、Notionデータベースの全ページ情報がdata変数に格納され、Loggerに表示されます。Notionのプロパティ(タイトル、テキスト、セレクトなど)は、data.results[i].properties の中に格納されています。
GASでNotionデータベースにデータを追加する
次に、Notionデータベースに新しいページを追加する方法です。以下のようなコードになります。
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 options = {
'method': 'post',
'headers': {
'Authorization': `Bearer ${NOTION_API_KEY}`,
'Content-Type': 'application/json',
'Notion-Version': '2022-06-28'
},
'payload': JSON.stringify({
'parent': {
'database_id': DATABASE_ID
},
'properties': {
'Name': {
'title': [
{
'text': {
'content': 'GASから追加した新しいタスク'
}
}
]
},
'Status': {
'select': {
'name': 'ToDo'
}
}
}
})
};
try {
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
} catch (e) {
Logger.log('Error: ' + e);
}
}
propertiesの部分は、追加したいNotionデータベースのプロパティ名と値に合わせて記述します。- 上記例では、
Name(タイトルプロパティ)とStatus(セレクトプロパティ)に値を設定しています。
まとめ
今回は、GASを使ってNotionデータベースのデータを取得・追加する方法の基本をご紹介しました。Notion APIは、データの更新や削除、ページプロパティの更新など、さらに多くの操作が可能です。これらの基本をマスターすれば、NotionとGASを組み合わせた強力な自動化ワークフローを構築できるでしょう。
次回は、データの更新や削除、そしてより複雑なクエリの実行方法について解説する予定です。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。