GASでチャットワークAPIからルームIDを取得する方法(getRoomsメソッド)
Google Apps Sciript(GAS)にはチャットワークAPIを簡単に操作できるChatWorkClientライブラリが用意されていて、簡単にメッセージを投稿したりすることができます。
そこで、ChatWorkClientライブラリに用意されたgetRoomsメソッドを使ってチャットワークのルームIDを一覧取得する方法を解説します。
チャットワークはAPIで操作可能
チャットワークは日本企業が開発・提供しているチャットツールです。
チャットツールとしてはSlackやTeamsが有名ですが、チャットワークはフリーランスや個人事業主、中小企業などでよく利用されています。
そんな国産チャットツールであるチャットワークにもSlackAPIのようにChatworkAPIが用意されています。
チャットワークAPIを活用することで、グループチャットや特定ユーザー宛にメッセージを送るプログラムを作成できます。
さらにチャットワークの色々なルームに投稿されたメッセージやタスク情報をAPI経由で取得可能です。
GASにはChatWorkClientライブラリ
チャットワークAPIを扱うのにオススメなのがGoogle Apps Script(GAS)です。
GASでなぜチャットワークAPIを利用するのがよいかといえば、ChatWorkClientというライブラリがあるからです。
ChatWorkClientライブラリを利用することで、GASスクリプトからチャットワークAPIにリクエストできます。
もちろんチャットワークAPIを直接GASからリクエストも可能ですが、ライブラリを利用することで少ないコードで簡単にチャットワークAPIの通信が可能です。
チャットワークAPIでメッセージを送るのに必要なルームID
ルームIDは特定ユーザーとの個人チャットや、複数人のグループチャットに一意に紐付けられているIDです。
ブラウザのURLを確認すると、「https://www.chatwork.com/#!rid260168***」となっており、この9桁の数字部分がルームIDです。
ChatworkAPIを使ってチャットワークにメッセージを送る際には、送り先であるルームIDを指定する必要があります。
ChatWorkClientのgetRoomsでルームIDが取得可能
先程紹介したようにチャットワークAPIでメッセージを送る際に必要なルームIDはブラウザから調べることができます。
ただ、わざわざチャットワークの送りたいチャットルームのIDを調べるのは手間です。
実はチャットワークAPIではルームID一覧も取得することができます。
さらに、Google Apps Script(GAS)の場合、ライブラリであるChatWorkClientを使ってルームIDを取得できます。
GASのChatWorkClientライブラリでルームIDを取得するにはgetRoomsメソッドを実行します。
ChatWorkClient.factory({token: 'ChatworkAPIトークン’}).getRooms()
ChatWorkClientにAPIトークンをセットした後、getRoomsメソッドを実行するとオブジェクト形式でルーム情報が一覧出力されます。
戻り値の中に実行ユーザーがアクセス可能なチャットのルームIDがすべて格納されていて、そこからルームIDやルーム名を取得可能です。
チャットワークAPIでルームIDを取得するGASサンプルコード
実際にChatWorkClientライブラリを利用して、チャットワークAPIからすべてのルームIDとルーム名(チャット名)を取得するGoogle Apps Script(GAS)のサンプルコードを解説します。
function getChatworkRoom() {
//Chatwork API Tokenを定数として定義(自分のAPIトークンをセット)
const token = '********************************';
// ChatworkAPIクライアント作成
const client = ChatWorkClient.factory({token: token});
//getRoomsメソッドでルーム情報一覧を取得
const roomList = ChatWorkClient.factory({token: token}).getRooms();
//ルームIDとルーム名をログ出力
for(let i=0;i<roomList.length;i++){
console.log(roomList[i].room_id + ":" +roomList[i].name)
}
}
まずチャットワークAPIのトークンを設定し、getRoomsメソッドでルーム情報一覧を取得し、forループで各ルームIDとルーム名をログ出力しています。
このようにGASスクリプトを実行すると、実行ログにルームIDとルーム名の組み合わせを一覧出力できます。
スプレッドシートにルームIDとルーム名を出力も
せっかくチャットワークAPIから取得したルームIDはログ出力だけでなく、スプレッドシートにも出力して保管したいケースも多いです。
先程のChatWorkClientでルームIDを取得するGoogle Apps Script(GAS)のサンプルコードを少し改良すれば、スプレッドシートにルームIDとルーム名を記録することもできます。
function getChatworkRoom() {
//Chatwork API Tokenを定数として定義
const token = '********************************';
// ChatworkAPIクライアント作成
const client = ChatWorkClient.factory({token: token});
//getRoomsメソッドでルーム情報一覧を取得
const roomList = client.getRooms();
//ルームIDとルーム名をスプレッドシートに出力するため2次元配列を設定
for(let i=0;i<roomList.length;i++){
roomList[i] = [ roomList[i].room_id, roomList[i].name ];
}
//アクティブなスプレットシートのシート読み込み
const ss = SpreadsheetApp.getActiveSheet();
//スプレッドシートにルームIDとルーム名を出力
ss.getRange(2,1,roomList.length,roomList[0].length).setValues(roomList);
}
ルームIDとルーム名の2次元配列を用意し、スプレッドシートに出力するようにサンプルコードを変更しています。
改良版GASスクリプトを実行するとスプレッドシートにルームIDとルーム名の一覧を書き込むことができました。
これで取得したルームIDを使って全チャットにメッセージを投稿するなど、チャットワークAPIの活用幅が広がります。
まとめ・終わりに
今回、Google Apps Script(GAS)のChatWorkClientライブラリを使い、チャットワークAPIからルームID一覧を取得する方法を紹介しました。
ルームIDはチャットワークのURLから確認できますが、ChatWorkClientのgetRoomsメソッドで簡単にルームIDを取得できます。
ルームIDが分かれば、すべてのチャットに自動でメッセージを送ったり、特定のチャットにのみメッセージを送る制御などがGASスクリプトで可能です。
ChatworkAPIを使ってルームIDをGASで取得したい場合はぜひ紹介したサンプルコードを参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません