Googleカレンダーの予定をチャットワークに毎日自動で投稿する方法

Googleカレンダーの予定をチャットワークに毎日自動で投稿する方法

Googleカレンダーの予定をチャットワークを使用して毎日通知するスクリプトをご紹介します。

使用を想定するシーンとしては、自分だけではなく社内の多数の人に対して予定を通知する必要があるシーンなどが当てはまります。

筆者に場合は、既存顧客へのパーソナライズされた通知が、いつどんなお客さまに届くのかを社内の関連部署に共有する必要があったため、該当者のメールアドレスをいちいち追加して通知設定をするのではなく、チャットワークbotによる通知を行っていました。

りぴとん
りぴとん

同じようなシーンに出くわした方は、ぜひ参考にしてください。

Googleカレンダーの予定をチャットワークで通知するGASのスクリプト

作成するプログラムは以下です。

HTML
function sendSchedule() {
  var myCals=CalendarApp.getCalendarById('xxxxxx'); //1.カレンダーID
  var myEvents=myCals.getEventsForDay(new Date());
  var strBody = "[info][title]" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "予定[/title]" //2.配信文章

  for(var i=0;i<myEvents.length;i++){
    var strTitle=myEvents[i].getTitle();
    var strStart=_HHmm(myEvents[i].getStartTime());
    strBody=strBody + strStart + '|' + strTitle + '\n';
  }
  strBody = strBody + 'カレンダー:xxxxxx[/info]'; //2.配信文章
  var cwClient = ChatWorkClient.factory({token: 'xxxxxx'}); //3.チャットワークのトークン
  cwClient.sendMessage({
    room_id:xxxxxx, //4.チャットワークのルームID
    body: strBody
  });
  deleteTrigger();
}

function _HHmm(str){
  return Utilities.formatDate(str, 'JST', 'HH:mm');
}

function isBusinessDay(date){
  if (date.getDay() == 0 || date.getDay() == 6) {
    return false;
  }
  const calJa = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
  if(calJa.getEventsForDay(date).length > 0){
    return false;
  }
  return true;
}

function setTrigger() {
  var triggerDay = new Date();
  triggerDay.setHours(xx); //5.投稿時間(時)
  triggerDay.setMinutes(xx); //5.投稿時間(分)
  if (isBusinessDay(triggerDay)){
  ScriptApp.newTrigger("sendSchedule").timeBased().at(triggerDay).create();
  }
}

function deleteTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == "sendSchedule") {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}
りぴとん
りぴとん

まだこれだけでは使えません。ご自身の状況に合わせ、以下修正をおこなってください。

使用するために修正すべき箇所

スクリプト内にある、「//1.カレンダーID」のように注釈がついている行の「xxxxxx」の部分を修正していってください。

カレンダーID

カレンダーIDは、Googleカレンダー固有のIDのことです。特に新しいカレンダーを作成していない場合は自分のGmailアドレスがそれにあたります。

りぴとん
りぴとん

カレンダーのIDを確認する場合は、設定>マイカレンダーの設定>カレンダーの統合 と進めてください。

チャットワークでの文章

チャットワークbotにどのような文章を投稿させるかを編集してください。

具体的には、“の予定[/title]”の部分を変更することで、通知のタイトルを変更することが可能です。

また、通知するのは予定のタイトルだけのため、自分を含めた全員が予定の詳細を知りたい場合はGoogleカレンダーにアクセスする必要があります。

りぴとん
りぴとん

その場合、「xxxxxx」となっているカレンダーのリンクを該当のものに変更してください。
不要な場合は削除していただいてOKです。

チャットワークのトークン

Apps Scriptがチャットワークと連携するためには、「カギ」と「部屋番号」が必要となります。

りぴとん
りぴとん

トークンとは、「カギ」のことです。

チャットワークでAPI連携の申請をすれば発行してもらえるものになるので、まだの場合は申請をしましょう。

チャットワークのルームID

Apps Scriptがチャットワークを使用するために必要なもうひとつのアイテム、「部屋番号」のことです。

ャットワークのグループチャットのリンクの最後の部分(例:https://kcw.kddi.ne.jp/#!rid1234567 というリンクなら、ridの後ろの「1234567」)がそのIDです。

投稿時間

チャットワークbotに何時に毎日投稿してほしいかを設定します。

りぴとん
りぴとん

任意の時間に設定しましょう。筆者の場合は、投稿時間を08時50分に設定しています。

トリガー設定

本スクリプトが自動で発動するための条件を設定します。

投稿時間で設定した2時間前くらいに「setTrigger」が発動するように設定します。

これで設定終了です。

Googleカレンダーに登録されている予定は、チャットワークに自動投稿されるようになりました。

運用にあたり、Googleカレンダーに予定をいちいち登録するのが面倒だという場合には、別のスクリプトも準備しています。合わせてご確認ください。

Googleカレンダーにスプレッドシートの予定をGASで同期する方法 Googleカレンダーにスプレッドシートの予定をGASで同期する方法

さいごに

Googleカレンダー自体に通知機能があるとはいえ、自分以外の不特定多数に共有するためには面倒な作業が発生します。

本スクリプトを実装しておけば、必要なチャットルームに任意の時間で自動投稿ができるため、共有の手間が一切発生しなくなります。

社内インフラでチャットワークを使用している場合は、ぜひチャレンジしてみてください。

スポンサーリンク