ChatWork

【ChatWork】Googleカレンダーの予定を通知する方法

できるだけGoogleカレンダーにスケジュールを入力しているのですが、作業に集中していると、次の予定を過ぎてしまうことがあります。

あまりカレンダーの通知に気が付かないので、チャットワークで通知するようにしてみました。

引用

こちらの記事のやり方とコードを使用しています。

Googleカレンダーの予定が始まる直前にChatWorkに通知する | Developers.IO

カスタマイズ

使いやすいようにいくつかコードを変更しました。

通知用のグループに投稿

マイチャットに投稿したくないので

事前にGキーを押して、新しい通知用のグループを作成し、ルームIDをメモしておきます。

//client.sendMessageToMyChat(createMessage(event));
var message = createMessage(event);
var room_id = 'ルームID';
client.sendMessage({room_id: room_id, body: message});

自分にToをつける

通知に気がつくように

msg = msg + "が始まります"; → msg = "[To:1234567]" + msg + "が始まります";

通知を未読に

チャットワークAPI経由で投稿した投稿に未読がつかなくなった

仕様変更で残念なことになったので、下記のコードを追加しました。

参考

チャットワークAPIの自動投稿に未読を付ける – Qiita

// 「未読をつける」メソッドを追加 
var res = client.sendMessage({room_id: room_id, body: message});
client.makeMessageUnread = function(room_id, message_id) {
return this.put("/rooms/" + room_id + "/messages/unread", {"message_id": message_id});
}
//通知済みであることをスプレッドシートに記録
writeEventIdAndStartTime(sheet,event);
// 投稿直後ではAPIが失敗することがあるので、6秒ごとに2回トライする
var err;
for (var i = 0; i < 2; i++) {
try {
client.makeMessageUnread(room_id, res['message_id']);
return;
} catch(e) {
if (e["errors"] === "The messages is already marked as unread.") return;
err = e;
Utilities.sleep(6000);
continue;
}
}
throw err;

追記

このままだと毎回、2回通知されてしまうので下記のコードはコメントアウトすることをおすすめします。

//client.sendMessage({room_id: room_id, body: message});

感想

Chatworkをよく開いているので、Googleカレンダーの直前通知はいいアイディアだと思って作成してみましたが、

APIからの投稿がTOがつかないことで、残念な結果になってしまいました。

ただTOの通知が付くように戻れば、有用なので仕様が戻ることを祈ります。

ABOUT ME
すいみん
テクニカルなことが好きなCGデザイナー