フリーランスや経営者の皆さん、毎日たくさんのメールに追われていませんか?特に「お問い合わせ」や「重要案件」といったメールは、見落としが許されず、管理も大変ですよね。「重要なメールだけをNotionに手作業でコピペしている…」そんな方も多いのではないでしょうか。その作業、実はたった30分で完全に自動化できるんです。この記事では、Googleの無料ツール「Google Apps Script」を使って、Gmailに届いた特定のメールを自動でNotionデータベースに記録する仕組みの作り方を、専門知識ゼロでも分かるように一から丁寧に解説します。このチュートリアルを終えれば、面倒な転記作業から解放され、メールの見落としもなくなり、重要な情報が一元管理された理想の状態が手に入ります。さあ、一緒に業務効率化への第一歩を踏み出しましょう!
今回作成する自動化の全体像
まずは、これから作る自動化の仕組みがどのような流れで動くのか、全体像を掴みましょう。専門用語は使わず、シンプルに図で解説します。
graph TD
A[Gmailで特定のメールを受信] --> B{Google Apps Scriptが1時間ごとにチェック};
B --> C{条件に合うメールを発見!};
C --> D[メール情報を取得<br>(件名, 送信者, 本文...)];
D --> E[Notion APIを呼び出し];
E --> F[Notionデータベースに<br>新しいページとして自動追加];
このように、Google Apps Script(GAS)という「小さなロボット」が定期的にあなたのGmailを見回り、指定した条件のメールを見つけたら、その内容を自動でNotionに書き込んでくれる、という仕組みです。
ステップ0:事前準備
本格的な作業に入る前に、必要なものを揃えましょう。すべて無料で利用できるものばかりです。
- Googleアカウント: Gmailや、今回の自動化の主役であるGoogle Apps Scriptを利用するために必須です。すでにお持ちのGmailアカウントで問題ありません。
- Notionアカウント: メール情報を記録するデータベースを作成するために使います。無料プランで十分です。
たったこれだけです。特別なソフトのインストールは一切不要。ブラウザだけで完結します。
ステップ・バイ・ステップ構築ガイド
ここからは、実際の構築手順を詳しく解説していきます。焦らず、一つ一つのステップを確実に進めていきましょう。
Step1:Notionデータベースの準備
最初に、Gmailからのメール情報を保存するための「器」となるデータベースをNotionに作成します。
- Notionのワークスペースで、サイドバーの「+ 新規ページ」をクリックします。
- ページのタイトルを「メール管理DB」など分かりやすい名前に設定し、本体部分で「データベース」の中から「テーブル」を選択します。
- データベースが作成されたら、メールの情報を格納するための列(プロパティ)を用意します。デフォルトで存在する「タグ」プロパティは不要であれば削除してOKです。以下の5つのプロパティを、プロパティ名と種類が一致するように作成してください。列の右端にある「+」ボタンから追加できます。
- 件名 (種類:
タイトル) ※これは最初から存在します - 送信者 (種類:
リッチテキスト) - 受信日時 (種類:
日付) - 本文抜粋 (種類:
リッチテキスト) - メールリンク (種類:
URL)
- 件名 (種類:
- 最後に、このデータベースの「ID」を控えておきます。ブラウザのアドレスバーに表示されているURLを確認してください。
https://www.notion.so/あなたのワークスペース名/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=...のようになっているはずです。このxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの32文字の英数字がデータベースIDです。メモ帳などにコピーしておきましょう。
Step2:Notionインテグレーションの作成と権限設定
次に、外部のプログラム(今回はGAS)がNotionにデータを書き込めるようにするための「許可証」を発行します。これを「インテグレーション」と呼びます。
- Notionの左側メニューから「設定」→「インテグレーション」に進みます。
- 「+ 新しいインテグレーションを作成する」ボタンをクリックします。
- 「基本情報」で、インテグレーションの名前を「Gmail連携用」など分かりやすく設定し、連携するワークスペースを選択します。「送信」ボタンを押します。
- 次の画面で「機能」セクションの「コンテンツ機能」が「コンテンツを挿入」になっていることを確認します。
- 「シークレット」セクションに表示されている「内部インテグレーションシークレット」の「表示してコピー」をクリックし、表示されたトークン(
secret_...で始まる長い文字列)をコピーします。このトークンはパスワードと同じくらい重要な情報なので、絶対に他人に見せないでください。先ほどのデータベースIDと一緒にメモ帳に貼り付けておきましょう。 - 最後に、作成したインテグレーションに、Step1で作成したデータベースへのアクセス権を与えます。データベースのページに戻り、右上の「・・・」メニューから「コネクトの追加」を選択し、先ほど作成した「Gmail連携用」インテグレーションを選んで「招待」をクリックします。これで準備は完了です。
Step3:Google Apps Script (GAS) の記述
いよいよ、自動化の心臓部となるプログラムを書いていきます。と言っても、ほとんどコピー&ペーストで完了するので安心してください。
- こちらをクリックして新しいGoogleスプレッドシートを開きます。ファイル名は「Gmail-Notion自動化」などとしておきましょう。
- メニューバーから「拡張機能」→「Apps Script」を選択します。すると、スクリプトエディタが新しいタブで開きます。
- エディタに最初から書かれているコード(
function myFunction() { ... })をすべて削除し、以下のコードをそのまま貼り付けてください。// ▼▼▼ 設定項目 ▼▼▼ // 1. NotionインテグレーションのAPIキー(Step2でコピーしたもの) const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // 2. NotionデータベースのID(Step1でコピーしたもの) const DATABASE_ID = 'YOUR_DATABASE_ID'; // 3. Gmailで検索する条件(例: 'label:問い合わせ is:unread' →「問い合わせ」ラベルが付いた未読メール) const GMAIL_SEARCH_QUERY = 'label:問い合わせ is:unread'; // ▲▲▲ 設定項目 ▲▲▲ // メインの処理を実行する関数 function main() { // Gmailから条件に合うメールスレッドを取得 const threads = GmailApp.search(GMAIL_SEARCH_QUERY); // 取得したスレッドをループ処理 for (const thread of threads) { const messages = thread.getMessages(); for (const message of messages) { // まだNotionに登録されていないメールのみを処理する if (message.isUnread()) { addEmailToNotion(message); // 処理済みのメールを既読にする(重複登録防止) message.markRead(); } } } } // メール情報をNotionに追加する関数 function addEmailToNotion(message) { const notionApiUrl = 'https://api.notion.com/v1/pages'; // Notion APIに送信するデータを作成 const payload = { parent: { database_id: DATABASE_ID }, properties: { '件名': { title: [ { text: { content: message.getSubject() } } ] }, '送信者': { rich_text: [ { text: { content: message.getFrom() } } ] }, '受信日時': { date: { start: message.getDate().toISOString() } }, '本文抜粋': { rich_text: [ { text: { // 本文を最初の200文字だけ抜粋 content: message.getPlainBody().substring(0, 200) } } ] }, 'メールリンク': { url: `https://mail.google.com/mail/u/0/#inbox/${message.getId()}` } } }; // Notion APIへのリクエスト設定 const options = { method: 'post', contentType: 'application/json', headers: { 'Authorization': 'Bearer ' + NOTION_API_KEY, 'Notion-Version': '2022-06-28' }, payload: JSON.stringify(payload), muteHttpExceptions: true // APIエラー時にスクリプトを停止させない }; // APIリクエストを実行 const response = UrlFetchApp.fetch(notionApiUrl, options); Logger.log(response.getContentText()); // 実行ログに結果を出力 } - コードを貼り付けたら、先頭部分にある「▼▼▼ 設定項目 ▼▼▼」の3箇所を、あなたがメモしておいた情報に書き換えます。
YOUR_NOTION_API_KEY:Step2で取得したNotionのAPIキーに書き換えます。YOUR_DATABASE_ID:Step1で取得したNotionデータベースのIDに書き換えます。GMAIL_SEARCH_QUERY:Notionに転記したいメールの検索条件を指定します。例えば、「from:info@example.com is:unread」(info@example.comからの未読メール)や「subject:【重要】 is:unread」(件名に【重要】が含まれる未読メール)のように、Gmailの検索ボックスで使える条件がそのまま使えます。まずはGmail側で「問い合わせ」ラベルを作成し、対象のメールにそのラベルを付ける運用がおすすめです。
- 設定が終わったら、フロッピーディスクのアイコン(「プロジェクトを保存」)をクリックして保存します。
- 次に、一度だけ手動で実行して動作確認と「承認」を行います。エディタ上部の「実行」ボタンを押してください。初回実行時には「承認が必要です」という画面が表示されます。「権限を確認」→自分のGoogleアカウントを選択→「詳細」→「(安全でないページ)に移動」→「許可」の順にクリックしてください。これは、あなたの代わりにスクリプトがGmailを操作することを許可する、最初の1回だけ必要な儀式です。
エラーが出ずに実行が完了したら、Gmailで検索条件に合う未読メールを探し、それがNotionデータベースに追加されているか確認してみてください。無事に追加されていれば成功です!
Step4:GASのトリガーを設定して自動化を有効にする
最後の仕上げです。このスクリプトを定期的に自動で実行するように設定します。これを「トリガー設定」と呼びます。
- スクリプトエディタの左側メニューから、目覚まし時計のアイコン(「トリガー」)をクリックします。
- 右下の「+ トリガーを追加」ボタンをクリックします。
- 表示されたウィンドウで、以下のように設定します。
- 実行する関数を選択:
main - イベントのソースを選択:
時間主導型 - 時間ベースのトリガーのタイプを選択:
時間ベースのタイマー - 時間の間隔を選択(時):
1時間おき(お好みで変更可能です)
- 実行する関数を選択:
- 設定が終わったら「保存」ボタンをクリックします。
これで、すべての設定が完了しました!これからはあなたが何もしなくても、GASが1時間ごとにGmailをチェックし、新しい対象メールがあれば自動でNotionに記録し続けてくれます。
まとめ:自動化で生まれた時間を、もっと創造的な仕事に
お疲れ様でした!これで、面倒なメールの転記作業から完全に解放されましたね。この自動化のメリットは、単に時間が節約できるだけではありません。重要なメールの見落としというヒューマンエラーを防ぎ、問い合わせ情報をチームで共有しやすい形で一元管理できるようになります。空いた時間や集中力を、もっとビジネスを成長させるための創造的な仕事に使いましょう。今回の仕組みを応用すれば、「Googleフォームからの申し込みを自動でNotionに登録する」といった、さらに高度な自動化にも挑戦できます。ぜひ、あなたのビジネスにITの力を取り入れて、ライバルに差をつけてください!
免責事項:本記事で紹介している手順やコードは、執筆時点での情報に基づいています。各サービスの仕様変更により、同様の手順で動作しない可能性があります。また、本チュートリアルの実行によって生じたいかなる損害についても、当方は一切の責任を負いかねます。ご自身の責任において、バックアップを取るなどの対策の上、実行してください。

