GASのチャットワークAPI操作まとめ!メッセージ・ファイル・タスクの取得/投稿
Google Apps Script(GAS)でチャットワークAPIを使った各種操作方法をまとめました。
チャットワークに投稿されたメッセージやファイル、タスクを取得する方法から、API経由で各種投稿する方法を解説します。
GASはチャットワークAPI操作に便利
Google Apps Script(GAS)はチャットワークAPIを操作するのに便利なスクリプトサービスです。
GASはサーバーレスでスケジュール実行などで1時間に1回や、毎日○時に実行といった稼働ができます。
さらに、後述するChatWorkClientというライブラリが用意されており、メッセージ投稿などはライブラリを使えば簡単に操作できます。
そこで、GチャットワークAPIを利用して、各種操作をGASで実行する方法を紹介します。
チャットワークAPIのトークン発行方法
まず、Google Apps Script(GAS)でチャットワークAPIを使用するには、APIトークンを発行する必要があります。
APIトークン(APIキー)はチャットワークの管理画面から発行でき、以下の記事でAPIトークンの取得方法を解説しています。
チャットワークAPIは申請作業等なく、簡単にトークンを発行して利用することができます。
チャットワークAPIのトークンは漏洩すると他の人が自分に成り代わってメッセージを送ったり、メッセージのやり取りを取得できます。
APIトークンは厳重に保管するようにしましょう。
ChatWorkClientライブラリで実行可能な操作
Google Apps Script(GAS)でチャットワークAPIを利用する際にはChatWorkClientというライブラリが用意されています。
もちろんチャットワークAPIを直接UrlfetchApp.fetchでリクエストすることもできますが、ChatWorkClientを使えば、より簡単にチャットワークAPIを利用できます。
ただ、ChatWorkClientライブラリは利用できる機能が限られており、チャットワークAPIで操作可能なすべてが実行できるわけではありません。
ChatWorkClientライブラリに用意されているメソッドで実行可能なチャットワークAPI操作は以下の3つです。
- チャット一覧(ルームID)の取得
- チャットメッセージの送信
- タスクの取得・追加
チャットワークAPIを直接叩く操作
Google Apps Script(GAS)のChatWorkClientライブラリでできない操作は、チャットワークAPIを直接リクエストして実行する必要があります。
チャットワークAPIをGASのUrlfetchApp.fetchメソッドで実行しなければならない操作は主に以下の3つです。
- チャットに投稿されたメッセージの取得
- チャットに添付されたファイルの取得
- チャット(ルーム)へのファイルのアップロード
基本的にChatWorkClientライブラリで実行できない場合は、チャットワークAPIを直に叩くことになります。
チャット(ルーム)のIDを取得
チャットワークAPIからメッセージやタスク、ファイルを取得・投稿する際に必ず必要になるのはルームIDです。
ルームIDとは個人間チャットや複数人のグループチャットに固有に割り当てられたIDです。
このIDを引数に指定または、エンドポイントに含める形で各種チャットワークAPIの操作を実行します。
Google Apps Script(GAS)でルームIDをチャットワークAPIから取得するにはChatWorkClientライブラリのgetRoomsメソッドを利用します。
下記の解説記事のサンプルコードを実行することで、自分が参照可能なチャットのルームIDが取得できます。
チャットワークAPIによる効率化ではルームIDの一覧を取得するのが第一手目の対応です。
チャットワークにメッセージ投稿
チャットワークの効率化の1つにボットや定期的にメッセージを投稿するプログラムがよく作成されます。
チャットワークのメッセージを投稿するのも、Google Apps Script(GAS)のChatWorkClientライブラリで実現可能です。
投稿するメッセージの内容と、投稿先のルームIDをオブジェクト形式の引数で指定して、sendMessageメソッドを実行すると、チャットワークにメッセージを送ることができます。
チャットワークのメッセージ取得
Google Apps Script(GAS)のChatWorkClientライブラリでは実行できないのが、チャットワークに投稿されたメッセージの取得です。
チャットのメッセージ取得はチャットワークAPIに対し、直接リクエストしなければなりません。
チャットワークAPIのリクエストはUrlfetchApp.fetchメソッドを使って、ヘッダー情報にAPIトークンを設定し、HTTP通信を行います。
チャットワークの無料版は2022年10月より、過去40日または5000件以前のメッセージが表示されなくなりました。
無料のフリープランではメッセージが見れず、見たい場合は有料プランにアップデートが必要です。
ただ、GASでチャットワークAPIを使い定期的にメッセージを取得し、スプレッドシートなどにバックアップすれば、あとから参照できます。
チャットワークのメッセージをAPI経由で取得するのはニーズが高まると推測されます。
チャットワークのタスクを取得・投稿
チャットワークではメッセージのやり取りの他に、タスク機能が用意されています。
Chatworkのタスク登録画面から登録する以外に、投稿メッセージをタスク化することもできます。
そうしたチャットワークのタスクもAPIによる操作が可能です。
チャットワークのタスク取得や追加はGoogle Apps Script(GAS)に用意されたChatWorkClientライブラリを使用できます。
担当者が自分のタスクを取得して、期限切れになっている場合にリマインド通知を送るプログラムがGASで作成可能です。
その他にも定例タスクなどはチャットワークAPI経由で、定期的に自動投稿することもできます。
チャットワークに添付されたファイルの取得
チャットワーク上に投稿されたファイルをチャットワークAPIから取得することが可能です。
Google Apps Script(GAS)のChatWorkClientライブラリにはファイルの取得はできないため、チャットワークAPIを直接リクエストします。
チャットワークのチャットに投稿されたファイルをAPI経由でBlob形式で取得すれば、Googleドライブなどに保存できます。
解説記事ではGASでチャットワークAPIからファイルのダウンロードURLを取得し、ファイルをダウンロードしてGoogleドライブ保存する方法を解説します。
チャットワークのフリープラン(無料版)は過去40日以前のメッセージやファイルが2022年10月から参照できなくなりました。
チャットワークAPIをGASでうまく利用すれば、チャットワークのメッセージに加え、ファイルもGoogleドライブにバックアップできます。
ファイルをチャットワークにアップロード
先程はチャットワークのチャットに投稿されたファイルを取得しましたが、逆にチャットワークAPIでファイルを投稿することもできます。
そこで、Google Apps Script(GAS)でGoogleドライブにあるファイルをチャットワークAPIでアップロードしてみます。
上記のGoogleドライブのファイルをチャットワークAPIでアップロードするサンプルコードは以下の通りです。
function postFileToChatWork() {
//Chatwork API Tokenを定数として定義
const token = '********************************';
//メッセージを取得したいルームIDを定数として定義
const room_id = '+++++++++';
//ChatWorkAPIのファイルアップロードのエンドポイントを定義
const filePostUrl = 'https://api.chatwork.com/v2/rooms/' + room_id + '/files/';
//GoogleドライブからChatworkにアップロードするファイルをBlob形式で取得し名前を設定
const file = DriveApp.getFileById('GoogleドライブのファイルID').getBlob().setName('ファイル名');
//APIリクエスト時に必要なAPIトークンをJSON形式で指定
let json = {
'x-chatworktoken': token,
};
//アップロードするファイルとメッセージをペイロードに設定
let payload ={
'file' : file,
'message' :'GASからAPI経由でファイルアップロードしました。'
}
//HTTP POSTを行うためのメソッドと、パラメータを設定
let options = {
'method': 'post',
'headers': json,
'payload': payload
};
//チャットワークAPIへリクエストし、ファイルをアップロード
let response = JSON.parse(UrlFetchApp.fetch(filePostUrl, options).getContentText());
}
サンプルコードを実行すると、チャットワークの指定したチャットルームにファイルがアップロードされます。
このようにチャットワークAPIでファイルアップロードも自動化できます。
なお、チャットワークAPI経由でアップロードできるファイルの容量は5MBが上限です。
まとめ・終わりに
今回、Google Apps Script(GAS)でチャットワークAPIを操作して、メッセージ・タスク・ファイルの取得/投稿する方法をまとめてみました。
チャットワークAPIにはメッセージ、タスク、ファイルを操作する各種エンドポイントが用意されています。
GASの場合、ChatWorkClientライブラリを使う場合とチャットワークAPIを直接叩く2パターンがあります。
ChatWorkClientライブラリの方がコードがシンプルなので、GASライブラリが使える場合はそちらを使うのがおすすめです。
チャットワークAPIを活用することで、チャットワークの仕事を効率化することができます。
ぜひ、今回紹介した各種GASによるチャットワークAPIの操作を参考に、業務効率化に取り組みましょう。
ディスカッション
コメント一覧
まだ、コメントがありません