【GAS】Googleカレンダーから特定キーワードを含むスケジュール(イベント)を取得する

スキルアップ

はじめに

業務のスケジュールを共有する場合は、「WEBカレンダー」(GoogleカレンダーやOutlookなど)を利用します。

これは、予定を確認したい相手が決まっている場合は簡単に検索できます。
しかし、逆に「xxxxの予定が登録されている人」のような調べ方は難しいです
これを調べるには、他の人の予定を1人ずつ確認することになりますが、人数が多いととても大変です。

これの解消方法として、「特定のキーワードを含むスケジュール(イベント)を検索する」をGASプログラムの作成方法を紹介します。
このGASプログラムを利用すれば、「xxx当番」「xxx締切」「休暇」などの文言が設定されている人を横断的に検索することができます。

この記事を読んで分かること
・Googleカレンダーから特定の文言を含むイベントを取得する方法

Google Apps Script(GAS)を自動実行させるためのトリガー設定方法、取得した情報をGoogle Chatで通知する方法は、次の記事を参考にしてください。

Googleカレンダーでは、カレンダーに設定したスケジュール(予定)をイベントと呼びます。

(準備)Googleカレンダーへのスケジュール設定とカレンダーID確認

Googleカレンダーへのスケジュール設定

GASを利用してスケジュールを取得するカレンダーを参照できることを確認します。
参照できたら、今回取得するテスト用イベント「朝礼当番」を設定しておきます。

カレンダーIDの確認

左サイドバーからIDを確認したいカレンダーにカーソルを当てます。
カーソルを当てると[⁝](3点リーダー)が表示されるのでクリックします。

メニューが表示されるので、[設定と共有]をクリックします。

設定画面が表示されるので、[カレンダーの統合][カレンダーID]を確認します。

GASでGoogleカレンダー取得プログラムを作成

Google Apps Script(GAS)を作成するために、Googleドライブを表示します。
右上の[+ 新規]ボタンをクリックし、Google Apps Scriptを選択します。

Google Apps Script(GAS)のコード作成画面が表示されます。
ここにGoogle Chatへ設定したWebhookへリクエストを送信するためのプログラムを記述します。

プログラムはJavaScriptをベースにした記載ルールとなります。
下記ソースコードの[keyword][calenderIds]を修正すれば、自分好みのカレンダー取得プログラムが作成できます。

function getEventsByKeyword() {
  //イベント検索のためのキーワードを設定
  var keyword = '朝礼当番';

  //検索対象の日付を設定
  var startDate = new Date();

  //検索対象のカレンダーIDを設定
  var calenderIds = {
    'トビネズミ':'xxxxxxxxxx@gmail.com',
    '~~~~~~~':'~~~~~~~~~~@gmail.com'
    };

  //検索条件にヒットしたカレンダーのKey値を設定
  var hitKeys = [];

  //連想配列のデータを全て繰り返してイベントを検索
  Object.keys(calenderIds).forEach(function(key){
    //カレンダーIDと日付からイベント取得
    var myCalendar = CalendarApp.getOwnedCalendarById(calenderIds[key]);
    var myEvents = myCalendar.getEventsForDay(startDate);

    //取得したイベントがキーワードを含むかを判定
    myEvents.some(function(myEvent){
      var title = myEvent.getTitle();
      if(title.indexOf(keyword)!=-1){
        //条件に合致した場合は、Key値を配列に格納
        hitKeys.push(key);
        //キーワードを含むイベントが見つかればループを終了
        return true;
      };
    });
  });

  Logger.log(hitKeys);

}

ソースコードを作成して保存したらプログラムを実行します。
画面上部にある[実行]ボタンをクリックします。

実行ログを確認し、正常終了を示すメッセージが表示されていればOKです。
加えて、今回は「朝礼当番」が設定されているGoogleカレンダーの利用者を配列に格納し、ログ出力しました。

ここで取得した情報をGoogle ChatやGmailへ連携すれば、「今日の朝礼当番はトビネズミさんです」というリマインドを通知できます。

最後に

どのような場面でも、他メンバーの予定で「全員が定期的に確認するスケジュール」があると思います。
それをGASプログラムで集約して、一斉通知できればメンバーの負担が軽減されます。

このような自動化ツールによって人間が定例作業から解放されれば、本当に必要な仕事に専念できるようになります
是非、本記事を業務効率化の参考にしてください。

コメント

タイトルとURLをコピーしました