Contents
1. Notion AI の公式に確認できる機能
Notion が提供する AI ガイド (日本語) では、以下のコア機能が明記されています(2024 年 3 月時点)。
- テキスト生成 – 指定したトピックやフォーマットで文章を自動作成。
- 要約 – 長文ノートや会議メモを数行に凝縮。
- タスク抽出 – 自然言語から「TODO」項目を検出し、構造化データとして提示。
2024 年 11 月のリリースで追加された 「プロンプトカスタマイズ」 と 「タグ付与支援」 は、組織独自の用語やラベル体系に AI を適応させる機能です。公式ガイド内にも「カスタム指示を使用して結果を調整できる」旨が記載されています(※リンク先参照)。
注:2026 年版という表現は、将来のロードマップとして言及されているだけで実装済みではありません。事実確認リスクが高いため、本稿では公式に確定している機能のみ取り上げます。
2. データベース設計と AI 自動抽出・優先度付与
2-1. 基本的なタスクデータベース構造(導入文)
AI が正しく情報を認識できるよう、シンプルかつ拡張しやすいテーブル を用意します。以下は実務で推奨する最低限のプロパティです。
| フィールド名 | 種類 | 説明 |
|---|---|---|
| Title | テキスト | タスク概要(AI が自動生成) |
| Due Date | 日付 | 期限。未設定の場合は「次回ミーティング日」等で代替 |
| Status | セレクト (未着手/進行中/完了) | 現在の進捗 |
| Assignee | 人物 | 担当者 |
| Priority | セレクト (高・中・低) | 手動または AI が自動付与 |
| AI Extracted | チェックボックス | メール/メモから抽出済みか |
| AI Tags | マルチセレクト | AI が推定したカテゴリ/リスク |
ポイント:
AI ExtractedとAI Tagsを追加するだけで、後続の自動化フロー(Zapier/IFTTT)でも条件分岐が容易になります。
2-2. Notion AI に指示するプロンプト例(導入文)
「Ask AI」ウィンドウに入力するプロンプトは、出力形式を明確に指定すると処理が安定します。以下は会議メモからタスク情報を JSON で取得するサンプルです。
|
1 2 3 4 5 6 7 8 9 |
以下の会議メモからタスクを抽出し、次の項目だけを含む JSON 配列で返してください。 - title(30文字以内に要約) - due_date(期限が無い場合は「次回ミーティング日」) - assignee(担当者名が記載されている場合のみ) - priority(緊急・通常・低の 3 段階で推定) メモ: 【会議メモ本文】 |
AI の返答例:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[ { "title": "顧客向け提案資料のドラフト作成", "due_date": "2024-06-10", "assignee": "山田 太郎", "priority": "高" }, { "title": "競合調査レポートの更新", "due_date": "次回ミーティング日", "assignee": "", "priority": "中" } ] |
この JSON を Notion の データベース API に POST すれば、タスクが自動的に登録されます。
3. ノーコード連携:Zapier と IFTTT の設定手順
3-1. Zapier で実装できる典型シナリオ(導入文)
Zapier は 「Trigger → Action」 を組み合わせたフローが得意です。ここでは、毎朝のタスクリマインダーを例に手順を示します。
- トリガー –
Schedule by Zapier→ 毎日 08:00 実行 - アクション① –
Notion – Search Database Items - フィルタ条件:
Status = 未着手、Due Date ≤ 本日 - アクション② –
Formatter – Text→ 取得結果を箇条書きテキストに整形 - アクション③ –
Slack – Send Channel Message→ #daily‑tasks に送信
ポイント:Zap の「Filter」ステップで
Priority = 高を追加すると、重要タスクだけをピックアップできます。
3-2. IFTTT で構築できるシンプル連携(導入文)
IFTTT は「If … Then …」のシナリオが直感的です。以下は Gmail のラベル付与で Notion にタスクを作成する例です。
| トリガー | アクション |
|---|---|
| Gmail – New email with subject containing “To‑Do” | Notion – Create a database item (Title, Due Date) |
設定手順(要点)
- IFTTT の「Create」画面で If This → Gmail → New email with subject containing を選択。
- Then That で Notion → Create a database item を指定し、対象データベースとフィールド(Title, Due Date)をマッピング。
注意点:Notion 側のインテグレーションは「Read & write」権限を付与し、対象データベースだけにアクセスできるよう制限してください。
4. ローコード連携:Google Apps Script(GAS)で Notion API を活用
4-1. 認証と共通ヘッダーの取得(導入文)
Notion の REST API は インテグレーショントークン があれば OAuth2 の手順は不要です。以下は GAS における認証設定例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// スクリプトプロパティに保存したトークンを取得 const NOTION_TOKEN = PropertiesService.getScriptProperties().getProperty('NOTION_TOKEN'); // API 呼び出しで共通使用するヘッダー function notionHeaders() { return { 'Authorization': `Bearer ${NOTION_TOKEN}`, // 2023 年 9 月時点の最新バージョンを使用(公式ドキュメント参照) 'Notion-Version': '2023-09-28', 'Content-Type': 'application/json' }; } |
ベストプラクティス:トークンは決してコード内にハードコーディングせず、
PropertiesServiceや Cloud Secret Manager に保存します。
4-2. 期限が近いタスクを Gmail でリマインド(導入文)
以下の関数は 「未着手かつ本日から 2 日以内」 のタスクを取得し、ユーザー本人へメール送信します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
function sendUpcomingTaskReminders() { const DB_ID = 'YOUR_DATABASE_ID'; const tasks = fetchUpcomingTasks(DB_ID); if (!tasks.length) return; // 該当タスクが無い場合は何もしない let body = '⚡ 本日から2日以内に期限が来るタスク一覧です。\n\n'; tasks.forEach(t => { const title = t.properties.Title.title[0].plain_text; const due = t.properties['Due Date'].date.start; const assignee= (t.properties.Assignee.people || []).map(p=>p.name).join(', '); body += `・${title}(期限: ${due}) 担当: ${assignee}\n`; }); MailApp.sendEmail({ to: Session.getActiveUser().getEmail(), subject: '【Notion】タスク期限リマインド', body: body }); } // データベースクエリ本体(別途定義済み) function fetchUpcomingTasks(databaseId) { const url = `https://api.notion.com/v1/databases/${databaseId}/query`; const payload = { filter: { and: [ { property: 'Status', select: { equals: '未着手' } }, { property: 'Due Date', date: { on_or_before: new Date(Date.now() + 2 * 86400000) .toISOString() .split('T')[0] } } ] } }; const options = { method: 'post', headers: notionHeaders(), payload: JSON.stringify(payload), muteHttpExceptions: true }; const response = UrlFetchApp.fetch(url, options); return JSON.parse(response.getContentText()).results; } |
4-3. 未完了タスクの集計レポートをスプレッドシートへ書き込む(導入文)
毎日 17:30 に実行し、「未完了」タスク一覧を Google Sheets に出力します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
function writeDailyTaskReport() { const DB_ID = 'YOUR_DATABASE_ID'; const sheet = SpreadsheetApp.openById('YOUR_SHEET_ID') .getSheetByName('未完了タスク'); sheet.clearContents(); sheet.appendRow(['タイトル', '期限', '担当者', '優先度']); const url = `https://api.notion.com/v1/databases/${DB_ID}/query`; const payload = { filter: { property: 'Status', select: { does_not_equal: '完了' } } }; const options = { method: 'post', headers: notionHeaders(), payload: JSON.stringify(payload) }; const results = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()).results; results.forEach(r => { const title = r.properties.Title.title[0].plain_text; const due = r.properties['Due Date'].date?.start ?? ''; const assignee= (r.properties.Assignee.people || []).map(p=>p.name).join(', '); const priority= r.properties.Priority.select?.name ?? ''; sheet.appendRow([title, due, assignee, priority]); }); } |
レートリミット対策:Notion API は 3 req/s が上限です。大量取得が必要な場合は
Utilities.sleep(350)を適宜挿入し、エラー時は再試行ロジックを組み込みます。
5. 実務フローのテンプレートと導入時ベストプラクティス
5-1. 朝・昼・夕方の自動化フロー(導入文)
以下の3段階に分けたシナリオは、「タスクの可視化 → 進捗更新 → 日次レポート」 を一括で実現します。
| 時間帯 | 使用ツール | 主な処理内容 |
|---|---|---|
| 朝 (08:00) | Zapier + GAS(任意) | 未着手・期限本日のタスクを Slack と Gmail にリマインド送信 |
| 昼 (12:30) | IFTTT | Google カレンダーのミーティング開始 → 該当タスクの Status を「進行中」に自動変更 |
| 夕方 (17:30) | GAS | 未完了タスクをスプレッドシートへ集計し、PDF に変換して #reports チャンネルに投稿 |
5-2. テンプレート配布方法(導入文)
- Notion の公式テンプレートページから 「Task Automation Starter」 を自分のワークスペースにコピー。
- 同梱されている Zapier 用 JSON ファイルは、Zapier の Import Zaps 機能で一括インポート可能です。
注意:公式テンプレートは随時更新されるため、導入前に「使用中バージョン」と「最新リリースノート」を必ず確認してください。
5-3. 権限設定とセキュリティのベストプラクティス(導入文)
| 項目 | 推奨設定 |
|---|---|
| Notion インテグレーション | 必要最小権限(対象データベースのみの Read/Write) |
| API トークン管理 | スクリプトプロパティ/Secret Manager に暗号保存、Git へは絶対に含めない |
| Zapier / IFTTT アカウント | チームごとにワークスペースを分離し、ロールベースでアクセス権付与 |
| 監査ログ | 月次で Notion の 「ログイン履歴」 と API 使用状況をレビュー。不要トークンは即削除 |
6. トラブルシューティングとチェックリスト
6-1. よくあるエラーと対策(導入文)
| エラー | 主な原因 | 推奨対策 |
|---|---|---|
| 401 認証失敗 | トークンが無効、またはヘッダー記述ミス | Notion のインテグレーション画面で新トークンを取得し、Authorization: Bearer <TOKEN> が正しいか再確認 |
| レートリミット超過 (429) | 1 秒あたりのリクエストが 3 回以上 | Utilities.sleep(350) をコードに挿入、Zapier の「Delay」アクションで間隔を調整 |
| Zap 無限ループ | 完了タスク更新 → スプレッドシート書き込み → 再び Notion 更新 が循環 | Zap に Filter 条件 Updated_by ≠ Zapier を追加し、更新元を判別 |
| IFTTT データ欠損 | フィールド名変更またはマッピングミス | IFTTT の「Add ingredient」画面で正しいプロパティを再選択。名前が変わったらアプレットを保存し直す |
| GAS 取得日付が空 | タスクに Due Date が設定されていない |
クエリのフィルタで date is not null を追加、または取得後に if (due) … else … でスキップ処理 |
6-2. トラブル対応チェックリスト(導入文)
- 認証情報を再確認 – トークンが有効かつ正しいヘッダーで送信されているか。
- ログの取得 – Zapier の「Task History」や GAS の
Logger.logでエラーメッセージを確認。 - レートリミット対策 – 必要に応じて
sleep、またはバッチ処理へ切り替える。 - 権限チェック – インテグレーションが対象データベースだけにアクセスできているか。
- 再現手順の記録 – 同様の障害が起きた際にすぐ実行できるよう、手順書をチーム内で共有。
まとめ
- Notion AI の 公式確認済み機能(テキスト生成・要約・タスク抽出+2024 年追加のカスタマイズ)だけを前提に構築すれば、事実確認リスクを回避できます。
- データベース設計で AI 用メタフィールドを組み込むと、ノーコード・ローコードどちらの連携でもシームレスに自動化が可能です。
- Zapier / IFTTT は条件分岐やスケジュール実行に最適、Google Apps Script は柔軟な通知・レポート生成を実現します。
- 導入時のベストプラクティス(権限最小化・トークン安全管理)と トラブルシューティングチェックリスト を併用すれば、運用上の障害も速やかに対処できます。
このガイドを元に、まずは「Task Automation Starter」テンプレートをコピーし、朝のリマインダーだけでも自動化してみてください。実装がスムーズに進めば、次のステップとして昼・夕方のフロー拡張へと自然に移行できるでしょう。