この記事では、NotionとGoogle Apps Script(GAS)を活用し、Notionの日付プロパティを参照しGmail通知する方法を解説します。
ユースケースとして、今回は、Notionで作成した案件管理DBをもと契約終了日前に通知が欲しいというシナリオでやってみたいと思います。
より効率的に開発したい場合は下記の記事を参考に開発環境の構築に挑戦してみましょう。
[目次を開く]
1. Notionで案件管理データベースを作成
まずは、Notion上で案件管理用のデータベースを作成します。このデータベースには以下のような項目を設定します。
- 案件名: 案件の名称を入力します。
- クライアント名: クライアントの名前を記録します。
- 契約終了日: 契約終了日を「日付」プロパティで設定します。
- 通知日: 通知を受け取りたい日付(契約終了日の数日前など)を指定します。
これにより、案件ごとの契約終了日と通知日を一目で把握できるようになります。
Notion APIの設定
まず、Notionのインテグレーションキーを取得し、Notionデータベースにアクセスする必要があります。
- Notion APIにアクセスし、インテグレーションを作成してAPIキーを取得します。
- 対象のNotionデータベースに対して、作成したインテグレーションにアクセス権限を与えます。
2. Google Apps Scriptで通知スクリプトを作成
次に、Google Apps Scriptを使用して、指定した通知日にGmailで自動通知を送信するスクリプトを作成します。
下記のURLからNotion案件管理というプロジェクトを作成。
スクリプトの基本構造
以下は、GASで作成するスクリプトの基本的な構造です。
const NOTION_API_KEY = 'your_notion_integration_key'; // Notion APIキー
const DATABASE_ID = 'your_database_id'; // NotionデータベースID
function sendReminderEmails() {
const notionData = fetchNotionData();
if (!notionData) {
Logger.log("Notionデータを取得できませんでした。");
return;
}
const today = new Date();
const daysBeforeNotification = 3; // 何日前に通知するか
let notificationMessages = [];
notionData.forEach(page => {
const title = page.properties.案件名.title[0].text.content; // 案件名プロパティ
const contractEndDateProperty = page.properties.契約終了日;
// 契約終了日が存在しない場合はスキップ
if (!contractEndDateProperty || !contractEndDateProperty.date) {
return;
}
const endDate = new Date(contractEndDateProperty.date.start); // 終了日のプロパティ
const notifyDate = new Date(endDate);
notifyDate.setDate(notifyDate.getDate() - daysBeforeNotification);
// daysBeforeNotificationから当日まで毎回実行
if (today >= notifyDate && endDate >= today) {
const message = `案件「${title}」の契約終了日が近づいています。終了日は${endDate.toLocaleDateString()}です。`;
notificationMessages.push(message);
}
});
// 通知が必要な案件がある場合、メールを送信
if (notificationMessages.length > 0) {
const emailAddress = "your-email@gmail.com"; // 送信先のメールアドレスを指定
const subject = "契約終了日が近づいている案件のリスト";
const message = notificationMessages.join("\n\n"); // 複数のメッセージを1つにまとめる
MailApp.sendEmail(emailAddress, subject, message);
}
}
Notion APIキーは作成したインテグレーションから確認できます。
対象のNotionデータベースのURLを確認すると「"https://www.notion.so/XXXXXXXX?v=YYYYYYYY"」といった形式となっていますが、その「XXXXXXXX」の部分がNotionデータベースIDです。
定期実行の設定
Google Apps Scriptでは、トリガーを設定することでスクリプトを定期的に実行することが可能です。たとえば、毎日午前9時にスクリプトが実行されるように設定しておけば、通知日を過ぎた案件が確実にメール通知されるようになります。
- Google Apps Scriptのエディタで「トリガー」を開く。
- 「トリガーを追加」ボタンをクリック。
- 「時間ベースのトリガー」を選択し、毎日実行する設定にする。
if (today >= notifyDate && endDate >= today) この条件式だと契約終了日まで毎日通知されるので1回だけの通知で十分な場合はif (today === notifyDate) など、条件式を変更してください。
3. Gmailでの通知確認と運用
スクリプトが正しく動作していれば、指定した通知日にGmailに通知メールが届くようになります。この運用により、契約終了日が近づいた案件に対して適切に対応できるようになります。
さらに、メールフィルタを活用して通知メールを特定のラベルで管理したり、重要度に応じて通知のタイミングを調整したりすることで、より洗練された案件管理が実現できます。
まとめ
NotionとGoogle Apps Scriptを組み合わせることで、案件管理の効率化と契約終了日管理の自動化を実現できます。この仕組みを導入することで、うっかり契約終了日を過ぎてしまうリスクを減らし、クライアントとの信頼関係を保つことが可能になります。ぜひ、この記事を参考にして、あなたの業務に役立ててください。

