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コラム

2014.03.14

WordPressをMAMPで動かす(2)

2018.06.11

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

2013.11.15

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

2014.01.10

WordPressを使ったサイト事例3

2013.11.08

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

2014.04.18

WordPressで一時的なテンプレートテストをする

2016.05.11

システムエンジニア M.R

2016.05.11

無線エンジニアのご紹介 I.Z

2013.11.29

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

2013.12.27

WordPress 3.8

2016.05.11

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

2014.03.31

WordPressをMAMPで動かす(3)

2016.05.11

無線エンジニアのご紹介 I.S

2014.01.27

wordpressの自動更新

2014.07.04

ぐるなび公式レストラン検索 「WordPressプラグイン」

2013.12.13

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

2014.06.20

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

2014.10.03

iPhone6/plus のスクリーン

2013.12.06

WordPressを使ったサイト事例

2014.09.01

かゆい所に手が届くWordPress 4.0アップデート