GASのチャットワークAPI操作まとめ!メッセージ・ファイル・タスクの取得/投稿

2022年10月14日

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つです。

  1. チャット一覧(ルームID)の取得
  2. チャットメッセージの送信
  3. タスクの取得・追加

チャットワークAPIを直接叩く操作

Google Apps Script(GAS)のChatWorkClientライブラリでできない操作は、チャットワークAPIを直接リクエストして実行する必要があります。

チャットワークAPIをGASのUrlfetchApp.fetchメソッドで実行しなければならない操作は主に以下の3つです。

  1. チャットに投稿されたメッセージの取得
  2. チャットに添付されたファイルの取得
  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ドライブにあるファイルを、Google Apps Script(GAS)でチャットワークAPIをリクエストしてファイルアップロード

上記のGoogleドライブのファイルをチャットワークAPIでアップロードするサンプルコードは以下の通りです。

Google Apps Script(GAS)で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());
}

サンプルコードを実行すると、チャットワークの指定したチャットルームにファイルがアップロードされます。

Google Apps Script(GAS)でGoogleドライブのファイルをチャットワークAPIでチャットにファイルアップロードするサンプルコードを実行した結果、チャットにファイルがアップロード

このようにチャットワークAPIでファイルアップロードも自動化できます。

なお、チャットワークAPI経由でアップロードできるファイルの容量は5MBが上限です。

まとめ・終わりに

今回、Google Apps Script(GAS)でチャットワークAPIを操作して、メッセージ・タスク・ファイルの取得/投稿する方法をまとめてみました。

チャットワークAPIにはメッセージ、タスク、ファイルを操作する各種エンドポイントが用意されています。

GASの場合、ChatWorkClientライブラリを使う場合とチャットワークAPIを直接叩く2パターンがあります。

ChatWorkClientライブラリの方がコードがシンプルなので、GASライブラリが使える場合はそちらを使うのがおすすめです。

チャットワークAPIを活用することで、チャットワークの仕事を効率化することができます。

ぜひ、今回紹介した各種GASによるチャットワークAPIの操作を参考に、業務効率化に取り組みましょう。