Loading...
Webシステム開発

Googleカレンダーにイベント登録、ChatWorkへメッセージを送信する方法④

2018.07.30 update

こんにちは、エンジニアのSです。

僕が担当しました、この『Googleカレンダーにイベント登録、ChatWorkへメッセージを送信する方法』の連載も今回が最終回です。
これを書き終えたら、次回以降のネタを探しに旅に出ようかと思います(冗談です)。

目次

Googleカレンダーのイベントを取得

Googleカレンダーからイベントを取得する方法(function)はいくつかありますが、今回はgetEvents()を使って取得します。
本当は、Googleカレンダーでイベントを作成した時に発行されるIDなどをキーとしたいところですが、残念ながらその種の値を取得することはできません。なので、getEvents()を使い、取得期間を現在〜3ヶ月後として検索を実行します。
※期間は3ヶ月後でなくても可。

なお、取得イベントが存在しなかった場合は、処理を行わないようにします。
それと、Googleカレンダーでイベントを登録し、Google Apps Scriptが実行されるまでにタイムラグがあるようなので、イベントが最後に更新された日時から2秒以内のものを取得対象とするようにします。

上記要件をプログラムにすると、最終的には下記のような内容になります。
※ChatWorkに表示するイベントタイトルは、イベント情報から取得するように修正しました。送信内容はお好きなように書き換えてください。

function sendMsg(event) {
  // ChatWorkClientインスタンスを生成
  var client = ChatWorkClient.factory({token: '取得したChatWorkのAPI Token'});

  // CalendarAppインスタンスを生成
  var calendar = CalendarApp.getCalendarById('取得したGoogleのカレンダーID');

  // 現在日時・検索開始日時・検索終了日時を生成
  var currentTime = new Date();
  var startTime = new Date(currentTime.getYear(), currentTime.getMonth(), currentTime.getDate(), 0, 0, 0);
  var endTime = new Date(startTime.getYear(), startTime.getMonth() + 3, startTime.getDate(), 0, 0, 0);

  // 検索期間内のイベントを全て取得
  var events = calendar.getEvents(startTime, endTime);
  if (events.length > 0) {
    for (var i = 0; i < events.length; i++) {
      if ((currentTime.getTime() - events[i].getLastUpdated().getTime()) / 1000 <= 2) {
        // ChatWorkへメッセージ送信
        var body = '[info]';
        body = body + '[title]';
        body = body + events[i].getTitle();
        body = body + '[/title]';
        body = body + '送信内容';
        body = body + '[/info]';
        client.sendMessage({room_id: '取得したChatWorkのルームID', body: body});
      }
    }
  }
}

Googleカレンダーにトリガーを設定

ここまでの対応で、Google Apps Scriptを使って

  • Googleカレンダーのイベントを取得する
  • その内容をChatWorkへ通知する

ことはできているので、あとはこれらを

  • Googleカレンダーにイベントが登録されたら、一連の処理をする

という部分さえ対応できればいいかと思います。

Google App Acriptのメニューで

編集 > 現在のプロジェクトのトリガー

を選択してください。

初めてトリガーを設定する場合は「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」と表示されるので、リンクをクリックして、トリガーを設定するためのフォームを表示してください。

表示されたフォームで、以下内容に設定します。

実行

  • 作成したfunction名を選択

イベント

  • 「カレンダーから」を選択
  • 「予定を更新しました」を選択
  • 取得したGoogleのカレンダーIDを入力

「保存」ボタンをクリックして、トリガーを設定します。

これで、該当のGoogleカレンダーにイベントを登録すると、Google Apps Scriptが実行され、該当のChatWorkへイベント通知が行われます。

まとめ

いかがでしたでしょうか。
Google Apps ScriptはJavaScriptが書ける人なら簡単に利用することができるので、機会があればぜひ試してみてください。

連載

関連記事

  • 2018.08.06

    Node.js+express環境構築手順(2)

  • 2018.07.30

    Googleカレンダーにイベント登録、ChatWorkへメッセージを送信する方法④

  • 2018.07.24

    その先のこと!

COLUMNコラム

2018.07.17

Googleカレンダーにイベント登録、ChatWorkへメッセージを送信する方法③

2014.01.10

WordPressを使ったサイト事例3

2016.05.11

システム開発とは?

2014.06.20

WordPressのドメイン変更・サーバ移転など

2014.09.26

iOS8 Safariの新技術とブラウザ対応状況について

2013.12.13

WordPressでよく使うプラグイン4

2014.10.10

スターターテーマ「_s」でオリジナルテーマをつくる(1)

2013.11.08

新人ウェブデザイナーの制作話(2)

2018.06.01

Webサービスをリリースするまでの苦悩(1)

2013.12.06

WordPressを使ったサイト事例

2014.01.27

wordpressの自動更新

2014.05.30

WordPressの管理画面のURL変更

2014.03.14

WordPressをMAMPで動かす(2)

2014.04.11

WordPressとデータベース

2013.10.02

photoshop簡単に明るくふわっとした肌にする。

2013.11.29

WordPressでよく使うプラグイン3

2014.09.12

iphone6対応は必要か?

2014.09.05

WordPressのxmlrpc.phpについて

2013.10.30

WordPressでよく使うプラグイン1

2016.05.11

無線エンジニアのご紹介 K.N