📚

【GAS×ChatGPT】毎回同じメールアドレスに対するGoogleカレンダー招待を自動化

2023/11/20に公開

はじめに

Googleカレンダーで自分が予定に招待されるたびに、別のアドレスを手動で追加するのが面倒だったので、Google App Scriptで自動で招待するようにしました。

ユースケース

このスクリプトは、特定のチームメンバーやアシスタントを自分のすべての重要なイベントに自動的に招待する場合などに便利です。

概要

スクリプトの動作条件

  • 特定のメールアドレスからの招待があるイベント
    • スクリプトは、あらかじめ指定されたメールアドレス(emailToCheckとしてコード内に設定)から招待されたイベントを検索します。例えば、このメールアドレスが招待リストに含まれているイベントが対象となります。
  • ユーザー自身が主催するイベント
    • スクリプトは、ユーザー自身(emailToCheckで指定されたメールアドレス)が主催者となっているイベントも検出します。これは、ユーザーが直接作成したイベントを意味します。

スクリプトの動作概要

  • スクリプトは、GoogleカレンダーAPIを通じて、指定された期間(デフォルトでは現在から7日後まで)のイベントを取得します。
  • 各イベントについて、招待リストをチェックし、emailToCheckで指定されたメールアドレスが含まれているか、またはそのメールアドレスがイベントの主催者であるかを確認します。
  • 上記の条件に合致するイベントが見つかった場合、スクリプトは別の指定されたメールアドレス(additionalAttendeeとしてコード内に設定)をそのイベントの招待リストに追加します

手順

  1. Google App Scriptプロジェクト作成
  2. スクリプトの記述
  • ポイント
    • 今回は後述するトリガーで、イベントが作成、更新、削除された発火します。
    • 向こう30日先までのイベントを確認して、招待してくれます。
 * Googleカレンダーのイベントに自動的に指定のメールアドレスを招待するスクリプト。
 */

function addAttendeeToEvents() {
  var calendarId = 'primary'; // 使用するカレンダーID。必要に応じて変更してください。
  var emailToCheck = 'your_email@example.com'; // チェックするメールアドレス。適切な値に変更してください。
  var additionalAttendee = 'additional_email@example.com'; // 追加するメールアドレス。適切な値に変更してください。

  // カレンダーから30日先のイベントを取得
  var events = CalendarApp.getCalendarById(calendarId).getEvents(new Date(), new Date(new Date().getTime() + (1000*60*60*24*30)));
  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var organizer = event.getCreators();

    // 主催者が自分の場合、または特定のメールアドレスが含まれている場合にチェック
    if (organizer.includes(emailToCheck)) {
      event.addGuest(additionalAttendee);
    } else {
      var attendees = event.getGuestList();
      var isInvited = attendees.some(function(attendee) {
        return attendee.getEmail() === emailToCheck;
      });

      if (isInvited) {
        event.addGuest(additionalAttendee);
      }
    }
  }
}

3.トリガーの設定

  • イベントのソースを選択:カレンダーから
  • カレンダーの詳細を入力:カレンダー更新済みで、自分のメールアドレスを入力

4.保存してテスト。

  • 自分のGoogleカレンダーに予定を作成し、うまく指定のアドレスが招待されたら完了です。数秒で処理されます。

まとめ

今回ChatGPTに相談しながら作成しました。
毎回実行する面倒な業務は自動化することで、マインドシェアを解放することができます。

Nexaflowでは簡単な業務効率化から、CRM、データ活用までカバーしております。
お気軽にご相談ください。
https://nexaflow.io

Discussion