GASでチャットワークAPI経由でメッセージを投稿する方法(ChatworkClientライブラリ)
チャットワーク(Chatwork)などのチャットツールでは、ボットのように自動でメッセージを投稿できると便利です。
チャットワークにはChatworkAPIが用意されているので、Google Apps Script(GAS)を使ってチャットメッセージをAPI経由で投稿する方法を解説します。
チャットツールは自動投稿できるボットが便利
リモートワークの普及に伴い、メール以外のコミュニケーションツールとしてチャットツールが浸透しました。
チャットツールで業務効率化を図るため、よくボットを作成することが多いです。
ボットは特定のチャットに決まったタイミングでリマインドのメッセージを送ったり、特定のメッセージ対する回答を送ったりします。
こうしたボットを活用することで作業ミスや漏れを防止したり、チャット応答の負担を軽減できます。
チャットワークにはChatworkAPIが用意
国産チャットツールであるチャットワークにもSlackなどと同様に、APIサービスが提供されています。
「Chatwork API」では、チャットワーク上のグループチャットに加え、個人間のチャットに対してメッセージを投稿することができます。
チャットワークを利用登録済みのユーザーであれば、だれでもChatworkAPIを利用することが可能です。
チャットワークAPIを利用するために必要なAPIトークン(APIキー)を発行する手順は下記の記事で詳しく解説しています。
手順に沿って実行することで、チャットワークのAPIトークンを取得できます。
GASにはチャットワークAPIが簡単に使えるライブラリ
チャットワークのAPIが用意できれば、Google Apps Script(GAS)からUrlfetchAppオブジェクトのfetchメソッドを使い、APIリクエストが可能です。
ただ、チャットワークAPIをそのままリクエストするためにはAPIトークンの設定難易度が高いです。
APIへのリクエストはHTTP(HTTPS)を使う必要があり、HTTP通信する際にヘッダー情報や通信種別など設定する必要があるからです。
ただ、GASにはチャットワークAPIを手軽に扱うことができる「ChatWorkClient」というライブラリが用意されています。
このChatWorkClientライブラリを利用すれば、GASで簡単にチャットワークAPIを扱うことができます。
ChatWorkClientライブラリ利用方法
Google Apps Script(GAS)で利用可能なChatWorkClientライブラリを利用できるように導入手順を解説します。
1.GASスクリプトエディタを開き、ライブラリの右横にある「+」アイコンをクリックします。
2.スクリプトIDの入力が促されるので、ChatWorkClientライブラリ用のスクリプトIDの下記を入力し、「検索」ボタンをクリックします。
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
3.ChatWorkClientライブラリが表示されるので、バージョンはデフォルトの最新版のままで「追加」ボタンをクリックします。
以上の3StepでChatWorkClientライブラリのGASプロジェクトへの追加は完了です。
追加が終わった後、GASスクリプトエディタを確認すると、ライブラリ欄に「ChatWorkClient」が表示されるようになり、利用可能になります。
チャットワークAPIでメッセージ投稿するGASサンプルコード
実際にChatWorkClientライブラリを利用して、チャットワークAPIにリクエストしてチャットワークにメッセージを投稿するGoogle Apps Script(GAS)のサンプルコードを解説します。
事前設定としてAPIトークンをチャットワークの管理画面から取得しておく必要があります。
また、先ほど説明した通り、GASのスクリプトエディタのサービス追加あら「ChatWorkClient」ライブラリの追加も必要です。
チャットワークAPIとChatWorkClientの用意ができたところで、以下のサンプルコードをGASスクリプトエディタに貼り付けます。
function sendChatworkMessage() {
//Chatwork API Tokenを定数として定義(自分のAPIトークンをセット)
const token = '******************************';
//メッセージを取得したいルームIDを定数として定義
const room_id ='+++++++++';
// ChatworkAPIクライアント作成
const client = ChatWorkClient.factory({token: token});
//チャットワークAPIで投稿するメッセージを設定
const message = 'チャットワークAPIからGASによるメッセージ投稿です。';
//ChatworkAPIクライアントからメッセージ投稿
client.sendMessage({
room_id: room_id,
body: message
});
}
※新規作成した際に表示されているmyFunctionは不要なので削除しています。
サンプルコードでは、APIトークンを定数として定義するので、この文字列部分をご自身のチャットワークAPIから取得したAPIトークンに書き換えてください。
続いてチャットワークAPIでメッセージを投稿するルームIDを入力します。
ルームIDはブラウザのURL欄に「https://www.chatwork.com/#!rid294******」と書かれており、!rid以降の数字部分です。
そしてChatWorkClientにトークンを設定し、sendMessageメソッドを使ってメッセージを投稿します。
このようにチャットワークのグループチャットやDM宛に自分の代わりにメッセージの投稿ができるようになります。
チャットワークAPIをUrlfetchApp.fetchメソッドで直接リクエストを送るよりも簡単・シンプルにチャットワークにメッセージを送れます。
定期実行のボット投稿など行いたい場合は、ボット用アカウントを準備し、そのボットアカウントでチャットワークAPIトークンを取得してプログラムのtokenを書き換えれば、簡単にボット導入可能です。
ChatWorkClientではメッセージ取得は不可能
Google Apps Script(GAS)でChatworkAPIを利用するのに便利なChatWorkClientライブラリですが、欠点もあります。
ChatWorkClientライブラリでは、ChatworkAPIが提供しているすべてのAPIを利用することができない点です。
メッセージの投稿やチャットワークのルームIDを取得したり、タスクを取得することはできます。
しかし、チャットワークのグループチャットや個人間のチャットにあるメッセージを取得するメソッドがChatWorkClientライブラリには用意されていません。
そのため、ChatworkAPIを使ってチャットワークのメッセージを取得したい場合は、ChatworkAPIををUrlfetchAppオブジェクトを使いダイレクトにリクエストする必要があります。
※GASでチャットワークAPIを直接リクエストして、チャットワークからメッセージを取得する方法は以下の記事で解説しています。
まとめ・終わりに
今回、Google Apps Script(GAS)を使ってChatworkAPIをリクエストし、チャットワークにメッセージを自動投稿する方法を紹介しました。
GASにはChatworkAPIを手軽に利用できるChatWorkClientライブラリが用意されており、そのライブラリを活用することで簡単にメッセージが自動投稿できます。
ただ、ChatWorkClientライブラリは、ChatworkAPIが用意している機能をすべて実行できるわけではありません。
しかし、メッセージを決まった時間に投稿するなどのボット的な利用はGASで簡単に用意することができます。
チャットワークをコミュニケーションツールとして活用していて、効率化を図りたい場合はぜひGASとチャットワークAPIを組み合わせたプログラムを作ってみてください。
ディスカッション
コメント一覧
サンプルコードにチャットワークのroomIDが記載されたままですよ
ご指摘ありがとうございます。こちら残ったままでしたので、サンプルコードを修正させていただきました。