NotionのデータベースとGoogle Apps Scriptを組み合わせることで、毎日の日報作成を完全自動化できます。
「毎日の日報作成に時間がかかる」「書き忘れが多い」という悩みは、多くのビジネスパーソンに共通しています。Notionは情報管理ツールとして優秀ですが、単体では自動化に限界があります。そこでGoogle Apps Script(GAS)と連携させることで、Notionのデータを自動で集計し、日報を自動生成・送信する仕組みを構築できます。
本記事では、Notion APIとGASを使って「Notionのタスクデータベースから当日の完了タスクを自動収集し、日報メールを自動送信する」システムを一から作る手順を解説します。プログラミング初心者でも手順通りに進めれば実装できるよう、詳しく説明します。
この記事でできること
- Notion APIを使ってデータベースのデータをGASで取得する
- 毎日決まった時刻に日報を自動生成する
- 完成した日報をメールで自動送信する
- 日報内容をNotionに自動で記録・保存する
事前準備
以下のものが必要です。作業開始前に揃えておきましょう。
- Notionアカウント(無料プランでOK)
- Googleアカウント(GASを使用)
- Notionのタスク管理データベース(プロパティ:タスク名、担当者、完了フラグ、日付)
STEP1: Notion APIキーを取得する
まずNotionとGASを連携させるためのAPIキーを取得します。
- Notionにログインし、notion.so/my-integrationsにアクセスします
- 「新しいインテグレーション」をクリックし、名前(例:GAS日報Bot)を入力します
- 「送信」をクリックするとInternal Integration Tokenが発行されます
- このトークン(secret_xxxx…形式)をコピーして保存します
次に、連携したいNotionデータベースを開き、右上の「…」メニューから「接続」→作成したインテグレーションを選択して権限を付与します。データベースのURLに含まれる32文字の英数字がデータベースIDです。このIDも控えておきます。
STEP2: GASのスクリプトを作成する
Google Driveにアクセスし、「新規」から「Google Apps Script」を選択してプロジェクトを作成します。スクリプトエディタで以下の内容を入力します。まず設定項目として、NOTIONトークン、データベースID、送信先メール、氏名を定数として定義します。
メイン関数generateDailyReport()では、今日の日付をyyyy-MM-dd形式で取得し、fetchNotionTasks()でタスク一覧を取得します。タスクがあればcreateReportBody()で日報テキストを作成し、sendReportEmail()でメール送信します。
fetchNotionTasks()ではNotionのデータベースクエリAPIを呼び出します。filterにより完了フラグがtrueかつ本日の日付のタスクだけを絞り込みます。レスポンスのresults配列からタスク名とカテゴリを抽出して返します。
createReportBody()では日報のテキストを組み立てます。日付・担当者・完了タスク一覧・所感欄をテンプレートに従って結合します。sendReportEmail()ではGmailAppのsendEmail()を使ってメール送信します。
STEP3: 設定値を書き換える
コードの上部にある設定項目を自分の環境に合わせて書き換えます。
- NOTION_TOKEN: STEP1で取得したIntegration Tokenに置き換え
- DATABASE_ID: STEP1で控えたデータベースIDに置き換え
- REPORT_EMAIL: 日報の送信先メールアドレスに変更
- YOUR_NAME: 自分の名前に変更
Notionデータベースのプロパティ名がコードと一致しているか確認してください。チェックボックスのプロパティ名が「完了」であれば、コード内の「完了フラグ」を「完了」に変更します。
STEP4: 動作テストをする
実際にスクリプトを実行してテストします。
- GASエディタの上部にある関数選択プルダウンでgenerateDailyReportを選択します
- 「実行」ボタンをクリックします
- 初回実行時はGoogleアカウントの権限承認画面が表示されます。「許可」をクリックします
- 実行ログに「日報送信完了」が表示されれば成功です
- 指定したメールアドレスに日報メールが届いていることを確認します
うまく動作したら、次のSTEPで毎日自動実行する設定をします。
STEP5: 毎日自動実行のトリガーを設定する
GASには「トリガー」という自動実行機能があります。これを設定することで、毎日決まった時刻に日報が自動送信されるようになります。
- GASエディタの左メニューから「トリガー」(時計アイコン)をクリックします
- 右下の「トリガーを追加」ボタンをクリックします
- 実行する関数にgenerateDailyReportを選択、イベントのソースを時間主導型、日付ベースのタイマーで17時〜18時に設定します
- 「保存」をクリックして完了です
これで毎日17〜18時の間に自動で日報が送信されます。
うまくいかないときのチェックリスト
- APIトークンエラー: Notionのインテグレーションが正しく作成されているか、トークンをコピーし直してみる
- タスクが0件になる: Notionデータベースのプロパティ名がコードと一致しているか確認。日付フォーマットがyyyy-MM-dd形式になっているか確認
- メールが届かない: REPORT_EMAILに正しいアドレスが設定されているか確認
- 権限エラー: Notionデータベースに対してインテグレーションのアクセス権が付与されているか確認
- トリガーが動かない: GASプロジェクトがスタンドアロン型になっているか確認
応用・発展
基本的な日報自動化ができたら、さらに発展させることができます。
- Slack通知に変更する: メールの代わりにSlack Incoming Webhookを使い、UrlFetchApp.fetch()でSlackに送信できます
- 日報をNotionに記録する: Notion APIのpages.createエンドポイントを使い、生成した日報を別のNotionページとして自動保存できます
- 週次サマリーを作る: トリガーを週ベースに設定し、1週間分のタスクをまとめた週次報告書を自動生成できます
- ChatGPT APIと組み合わせる: タスクリストをChatGPT APIに送り、振り返りコメントを自動生成して日報に追加できます
まとめ
- Notion APIとGASを連携させることで、日報作成を完全自動化できる
- Notion Integrationを作成してAPIトークンを取得し、GASからデータを取得する
- GASのトリガー機能で毎日決まった時刻に自動実行できる
- Slack通知やNotion記録など、応用範囲は広い
- 日報の書き忘れゼロ・作成時間ゼロを実現し、本来の業務に集中できる
コメントを残す