フリーランスや経営者の皆さん、毎日大量に届くメールの管理に追われていませんか?「あのクライアントからの重要なメール、どこに行ったっけ?」「請求書メールを見落としてしまった…」なんて経験、一度はあるのではないでしょうか。特に、Gmailで受け取った情報をNotionで管理している場合、手作業でのコピー&ペーストは本当に面倒ですよね。今回はそんなお悩みを一挙に解決する、夢のような自動化術をご紹介します。この記事を読めば、Google Apps Script(GAS)という無料のツールを使って、特定の条件に合うGmailのメールを自動でNotionのデータベースに追加する仕組みを、プログラミング初心者の方でも約30分で構築できます。もう重要なメールを探し回る必要はありません。面倒な手作業から解放され、本当に価値のある仕事に集中する時間を手に入れましょう!
今回作成する自動化の全体像
まずは、今回作るシステムの全体像を掴みましょう。以下の図のように、GASが定期的にあなたのGmailをチェックし、指定した条件(例えば「請求書」という件名や、特定のアドレスからのメール)に合うメールを見つけたら、その内容を自動でNotionのデータベースに記録してくれます。
graph TD
A[Gmailに特定のメールが届く] --> B(GASが1時間ごとに自動チェック);
B --> C{条件に一致するメールを発見?};
C -- はい --> D[件名・差出人・本文などを取得];
D --> E[Notion APIを使ってデータ送信];
E --> F[Notionデータベースに新規ページとして追加];
C -- いいえ --> G[処理を終了];
ステップ0:事前準備
본격적인作業に入る前に、以下のものをご用意ください。ほとんどが普段お使いのアカウントかと思いますが、念のため確認しておきましょう。
- Googleアカウント: Gmailを利用するためのアカウントです。
- Notionアカウント: 情報を集約するためのNotionアカウントとワークスペースが必要です。
- 空のNotionデータベース: メール情報を保存するための新しいデータベースを1つ作成しておいてください。
- (所要時間): 約30分。コーヒーでも飲みながら、リラックスして進めましょう!
ステップ・バイ・ステップ構築ガイド
準備はよろしいでしょうか?ここからは、具体的な手順を一つずつ丁寧に解説していきます。
Step1:Notion側の準備(データベースとAPIキーの取得)
まずは、データの受け皿となるNotionの設定を行います。ここでの目標は、①メール情報を保存するデータベースを用意し、②GASがそのデータベースに書き込むための「合言葉」となるAPIキーを取得することです。
- Notionデータベースの作成とIDの確認
Notionで新しいページを作成し、「データベース – フルページ」を選択します。名前は「メール自動集約DB」などにしましょう。次に、メールの情報を保存するための列(プロパティ)を追加します。以下の5つを作成してください。件名(種類: タイトル) ※デフォルトで存在します差出人(種類: テキスト)受信日時(種類: 日付)本文抜粋(種類: テキスト)メールURL(種類: URL)
データベースが完成したら、ブラウザのアドレスバーに表示されているURLを確認します。
https://www.notion.so/あなたのワークスペース名/XXXXXXXX?v=...の「XXXXXXXX」の部分がデータベースIDです。32文字の英数字の羅列になっているはずです。このIDは後で使うので、メモ帳などにコピーしておきましょう。 - Notionインテグレーション(APIキー)の作成
次に、GASがNotionを操作するための許可証(APIキー)を発行します。
NotionのMy integrationsページにアクセスし、「+ New integration」ボタンをクリックします。名前を「Gmail連携用」などと入力し、「Submit」を押します。次の画面で「Internal Integration Token」という項目に表示されているsecret_XXXXXXXXという文字列がAPIキーです。「Show」をクリックしてから「Copy」して、これも先ほどのデータベースIDと一緒にメモ帳に大切に保管してください。このキーは絶対に他人に教えないでください。 - データベースとインテグレーションの連携
最後に、作成したデータベースと今作ったインテグレーションを連携させます。先ほど作成したNotionデータベースのページに戻り、右上の「・・・」メニューから「+ コネクトの追加」を選択し、先ほど作成した「Gmail連携用」インテグレーションを選んで連携を許可してください。
Step2:Google Apps Script (GAS) の準備
次に、自動化の心臓部となるGASの設定を行います。Googleスプレッドシートを開き、そこからスクリプトエディタを起動します。
- スクリプトエディタの起動
Googleドライブで「新規」 > 「Googleスプレッドシート」を選択し、新しいシートを作成します。名前は「Gmail-Notion連携」など分かりやすいものにしましょう。シートが開いたら、上部メニューの「拡張機能」から「Apps Script」をクリックします。すると、新しいタブでスクリプトエディタが開きます。 - スクリプトプロパティの設定
コードの中にAPIキーなどの大切な情報を直接書き込むのはセキュリティ上好ましくありません。そこで、「スクリプトプロパティ」という安全な場所に情報を保管します。スクリプトエディタの左側メニューにある歯車アイコン(プロジェクトの設定)をクリックします。一番下にある「スクリプト プロパティ」のセクションで、「スクリプト プロパティを編集」ボタンを押してください。
以下の3つのプロパティを追加します。「プロパティ」の欄に左側の名前を、「値」の欄に先ほどメモしたあなた自身の情報を入力し、「スクリプト プロパティを保存」をクリックします。- プロパティ:
NOTION_API_KEY, 値:secret_から始まるあなたのAPIキー - プロパティ:
NOTION_DATABASE_ID, 値: あなたのデータベースID(ハイフンなしの32文字) - プロパティ:
GMAIL_SEARCH_QUERY, 値:is:unread subject:請求書(例:未読で件名に「請求書」と含むメールを検索する場合)
※
GMAIL_SEARCH_QUERYは、Gmailの検索窓で使える条件式と同じです。from:info@example.comのように特定の差出人を指定することも可能です。 - プロパティ:
Step3:スクリプトを書いて動かす
いよいよメインのコードを書いていきます。と言っても、今回はコピペでOKです!
- コードの貼り付け
スクリプトエディタに最初から書かれているfunction myFunction() { ... }という部分を全て削除し、以下のコードをそのまま貼り付けてください。
function fetchEmailsAndAddToNotion() {
// スクリプトプロパティから設定情報を取得
const scriptProperties = PropertiesService.getScriptProperties();
const NOTION_API_KEY = scriptProperties.getProperty('NOTION_API_KEY');
const NOTION_DATABASE_ID = scriptProperties.getProperty('NOTION_DATABASE_ID');
const GMAIL_SEARCH_QUERY = scriptProperties.getProperty('GMAIL_SEARCH_QUERY');
// Gmailでメールを検索
const threads = GmailApp.search(GMAIL_SEARCH_QUERY);
// Notion APIのエンドポイントURL
const notionApiUrl = 'https://api.notion.com/v1/pages';
// 取得したメールをループ処理
threads.forEach(thread => {
const message = thread.getMessages()[0]; // スレッドの最初のメッセージを取得
// 必要な情報を抽出
const subject = message.getSubject();
const from = message.getFrom();
const date = message.getDate();
const plainBody = message.getPlainBody();
const bodyExcerpt = plainBody.substring(0, 200); // 本文を200文字だけ抜粋
const messageUrl = `https://mail.google.com/mail/u/0/#inbox/${message.getId()}`;
const isoDate = date.toISOString(); // Notion APIの日付形式に変換
// Notionに送信するデータを作成
const payload = {
parent: { database_id: NOTION_DATABASE_ID },
properties: {
'件名': { title: [{ text: { content: subject } }] },
'差出人': { rich_text: [{ text: { content: from } }] },
'受信日時': { date: { start: isoDate } },
'本文抜粋': { rich_text: [{ text: { content: bodyExcerpt } }] },
'メールURL': { url: messageUrl }
}
};
// 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を実行してNotionにページを作成
UrlFetchApp.fetch(notionApiUrl, options);
// 処理済みのメールを既読にする(重複処理防止)
message.markRead();
// 念のため1秒待つ
Utilities.sleep(1000);
});
}
- 初回実行と承認
コードを貼り付けたら、上部メニューのフロッピーディスクアイコン(💾)をクリックしてプロジェクトを保存します。次に、関数名の選択が「fetchEmailsAndAddToNotion」になっていることを確認し、「実行」ボタンを押してください。
初回実行時には「承認が必要です」というダイアログが表示されます。「権限を確認」をクリックし、自分のGoogleアカウントを選択します。「このアプリは Google で確認されていません」という警告が出ることがありますが、「詳細」→「(安全でないページ)に移動」をクリックして進み、「許可」ボタンを押してください。これは、あなたのGASがあなたのGmailを読み取ることを許可するための正規の手順なのでご安心ください。
これで、スクリプトプロパティで指定した条件に合う未読メールがあれば、Notionデータベースに自動で追加されているはずです。Notionを確認してみてください!
Step4:自動実行のトリガーを設定
最後に、このスクリプトが自動で定期的に実行されるように「トリガー」を設定します。これで、あなたが寝ている間もシステムが働き続けてくれます。
- スクリプトエディタの左側メニューから、目覚まし時計アイコン(トリガー)をクリックします。
- 右下の「+ トリガーを追加」ボタンをクリックします。
- 以下の通りに設定し、「保存」ボタンを押します。
- 実行する関数を選択:
fetchEmailsAndAddToNotion - 実行するデプロイを選択:
Head - イベントのソースを選択:
時間手動型 - 時間ベースのトリガーのタイプを選択:
時タイマー - 時間の間隔を選択(時):
1時間おき
- 実行する関数を選択:
これで全ての設定が完了です!お疲れ様でした。これからは1時間ごとにスクリプトが自動で実行され、条件に合うメールをNotionに集めてくれます。
まとめ:自動化で生まれた時間を、もっと創造的な仕事に
今回は、GmailとNotionを連携させ、面倒なメールの転記作業を自動化する仕組みを構築しました。一度設定してしまえば、あとはシステムが24時間365日、あなたのために働いてくれます。これで、請求書や重要なお問い合わせの見落としリスクを大幅に減らせるはずです。
今回のように、日々の定型業務の中には、GASのようなツールを使えば簡単に自動化できるものがたくさん隠されています。この自動化で生まれた貴重な時間を、ぜひ新しい企画の立案や自己投資など、もっと創造的な仕事に使ってくださいね。
次は、例えば「特定のキーワードを含むSlackの投稿をNotionに集約する」といった自動化に挑戦してみるのも面白いかもしれません。あなたの業務ハックは、まだ始まったばかりです!
免責事項:本記事で紹介している手順やコードは、執筆時点での情報に基づいています。各サービスの仕様変更により、同様の手順で動作しない可能性があります。また、本チュートリアルの実行によって生じたいかなる損害についても、当方は一切の責任を負いかねます。ご自身の責任において、バックアップを取るなどの対策の上、実行してください。

