Lazuli

らずり

GoogleAppsScript で ChatWorkAPI を使ってみた

はじめに

ここにあるように最近、ChatWorkAPI のプレビュー版が公開された。色々いじってる。

うちの会社ではその日の予定をGoogleカレンダーで管理してるんだけど、いかんせん自分から予定を見に行こうとしないと把握出来ない。チャットなら常時開いてるし日付変わった時に ChatWork に予定をポストしときゃいいんじゃないかなーと。
GoogleAppsScript (GAS) なら GoogleApps の相性が抜群なのでそれで。

GAS で Google カレンダーを操作する

カレンダー情報を取得してから今日の予定を取得する。CalendarApp クラスを使う。扱い易くて良い。

function getCalendarSchedule () {
    var calendar = CalendarApp.getCalendarByName('予定')[0],
        events = calendar.getEventsForDay(new Date()),
        schedule = '';

    for (var i = 0; i < events.length; i++) {
        schedule += events[i].getTitle() + '\n';
    }

    return schedule;
}

CalendarApp.getCalendarByName メソッドを使って名前指定でカレンダー情報を取得する。
カレンダーオブジェクトからは getEventsForDate メソッドで今日の予定を取得する。
あとは for で回して変数に仕込む。

ChatWork にポストする

取得した予定情報を ChatWorkAPI を使ってポストする。GAS には XMLHttpRequest はないので代わりにUrlFetchApp クラスというのを使う。

function postChatWork (message) {
    message = encodeURI(message);

    try {
        UrlFetchApp.fetch('https://api.chatwork.com/v1/rooms/{room_number}/message?body=' + body, {
            method: 'POST',
            headers: {'X-ChatWorkToken': 'chatwork_api_key'}
        });
    } catch (e) {
        Logger.log(e);
    }
}

ポストするメッセージは encodeURl メソッドでエンコードしておく。
UrlFetchApp.fetch メソッドで ChatWorkAPI を叩く。第二引数は省略可能だけど、ヘッダに API キーを仕込んだり色々するので省略することはないでしょう。

まとめ

というコードをまとめると以下のようになるんではないだろうか。

Enjoy!