アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

GASでNotionの日付プロパティを参照しGmail通知する

Featured image of the post

この記事では、NotionとGoogle Apps Script(GAS)を活用し、Notionの日付プロパティを参照しGmail通知する方法を解説します。

ユースケースとして、今回は、Notionで作成した案件管理DBをもと契約終了日前に通知が欲しいというシナリオでやってみたいと思います。

より効率的に開発したい場合は下記の記事を参考に開発環境の構築に挑戦してみましょう。

📄Arrow icon of a page linkGASのローカル開発環境を構築する方法


[目次を開く]

1. Notionで案件管理データベースを作成

まずは、Notion上で案件管理用のデータベースを作成します。このデータベースには以下のような項目を設定します。

  • 案件名: 案件の名称を入力します。
  • クライアント名: クライアントの名前を記録します。
  • 契約終了日: 契約終了日を「日付」プロパティで設定します。
  • 通知日: 通知を受け取りたい日付(契約終了日の数日前など)を指定します。

これにより、案件ごとの契約終了日と通知日を一目で把握できるようになります。

Notion APIの設定

まず、Notionのインテグレーションキーを取得し、Notionデータベースにアクセスする必要があります。

  1. Notion APIにアクセスし、インテグレーションを作成してAPIキーを取得します。

Image in a image block

  1. 対象のNotionデータベースに対して、作成したインテグレーションにアクセス権限を与えます。

Image in a image block

2. Google Apps Scriptで通知スクリプトを作成

次に、Google Apps Scriptを使用して、指定した通知日にGmailで自動通知を送信するスクリプトを作成します。

下記のURLからNotion案件管理というプロジェクトを作成。

script.google.com 

Image in a image block

スクリプトの基本構造

以下は、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時にスクリプトが実行されるように設定しておけば、通知日を過ぎた案件が確実にメール通知されるようになります。

  1. Google Apps Scriptのエディタで「トリガー」を開く。
  2. 「トリガーを追加」ボタンをクリック。
  3. 「時間ベースのトリガー」を選択し、毎日実行する設定にする。

if (today >= notifyDate && endDate >= today) この条件式だと契約終了日まで毎日通知されるので1回だけの通知で十分な場合はif (today === notifyDate) など、条件式を変更してください。

3. Gmailでの通知確認と運用

スクリプトが正しく動作していれば、指定した通知日にGmailに通知メールが届くようになります。この運用により、契約終了日が近づいた案件に対して適切に対応できるようになります。

さらに、メールフィルタを活用して通知メールを特定のラベルで管理したり、重要度に応じて通知のタイミングを調整したりすることで、より洗練された案件管理が実現できます。

まとめ

NotionとGoogle Apps Scriptを組み合わせることで、案件管理の効率化と契約終了日管理の自動化を実現できます。この仕組みを導入することで、うっかり契約終了日を過ぎてしまうリスクを減らし、クライアントとの信頼関係を保つことが可能になります。ぜひ、この記事を参考にして、あなたの業務に役立ててください。

業務効率化・DX推進でお悩みですか?

オンラインセッションで課題を可視化し、最適な解決策をご提案します。

  • DX推進を何から始めればいいかわからない
  • ツール導入を検討している
  • 社内でデジタル人材を育成したい
まずは無料で課題整理

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

業務効率化・DX推進のご相談はこちら

伴走支援プログラムの詳細を見る
無料相談はこちら