本記事では、実際にGASを用いたChatWork自動API連携の説明していきます。
今回は、問い合わせフォーマット(*)に合わせて問い合わせが来た際に、問い合わせとして認識し、通知を送るbotを作成していきます。具体的な利用シーンとして、お客様からの問い合わせを自動的にキャッチアップしたいという場面で活用することをイメージして作成しました。日々、たくさんの問い合わせに追われていたら役に立つはずです。
また、応用すれば自分宛のメッセージで欲しい情報だけ集めることもできると思いますので、最後まで見ていただけますと嬉しいです。
準備すること
過去の記事で前準備作業や似たような記事はまとめていますので、参考にしてみた下さい。


手順
- GoogleSpreadSheetsを新規作成する
- スクリプトエディタ(GAS)を開く
- コードを埋め込む
- ChatWrokライブラリを設定する
- ウェブアプリケーションとして登録する
- ChatWrokのwebhookに登録する
- 動作確認
GoogleSpreadSheetsを新規作成する
GoogleDriveのTOPページからSpreadSheetsを新規作成します。
(+新規 > Googleスプレッドシート)

スクリプトエディタ(GAS)を開く
作成したSpreadSheetsにてGASを開きます。
(ツール > スクリプトエディタ)

コードを埋め込む
開かれたGASに下記、サンプルコードを埋め込んでいきます。
※今回は、下記のように「■問い合わせフォーマット■」という文字列がチャット本文にあった場合に問い合わせと認知し、通知するbotとしています。
■問い合わせフォーマット■
お世話になっております。
本日は下記2点について確認させてください。1.〇〇の件
〜〜〜〜〜〜〜〜
2.△△の件
〜〜〜〜〜〜〜〜お手数をおかけいたしますが、よろしくお願いいたします。
では、実際にサンプルコードを埋め込んでみましょう。

サンプルコード
function doPost(e) {
var api_token = '748f13f9eb2868a02f7f546a66de8938'; // APIトークンを設定する
var postRoomId = 239856514; // メッセージを集めるチャットルームIDを設定する
var inquiry_format = '■問い合わせフォーマット■' // 問い合わせフォーマット識別文字
var json = JSON.parse(e.postData.contents);
var message = json.webhook_event.body; // メッセージ本文
var roomId = json.webhook_event.room_id; // メッセージが送信されたチャットルームID
var fromAccountId = json.webhook_event.from_account_id; // メッセージを送信したアカウントID
var messageId = json.webhook_event.message_id; // メッセージID
var sendTime = json.webhook_event.send_time; // メッセージの送信時刻
// 投稿専用チャットルームからのイベントは無視する
if (roomId == postRoomId) return;
// 投稿フォーマットとして認識したら通知する
if (message.indexOf(inquiry_format) != -1) {
// 情報を整形して投稿する
var client = createClient(api_token);
client.sendMessage(
{
room_id: postRoomId,
body: Utilities.formatString(
"[toall]\n[info][title]問い合わせ通知[/title][qt][qtmeta aid=%s time=%s]%s[/qt][/info]\nhttps://www.chatwork.com/#!rid%s-%s"
, fromAccountId
, sendTime
, message
, roomId
, messageId),
}
);
}
}
function createClient(api_token)
{
return ChatWorkClient.factory(
{
'token': api_token,
}
);
}
可変項目
下記3点を変更いただければ、サンプルコードをそのままご活用いただけます。
- APIトークン
- メッセージを集めるチャットルームID
- 問い合わせフォーマット識別文字
ChatWrokライブラリを設定する
ChatWorkと連携するために専用ライブラリを設定します。
(ライブラリ > +ボタン)
1.開かれた「ライブラリの追加」にあるスクリプトID欄にIDを入力し、検索ボタンを押下
2.バージョンを選択し、追加ボタンを押下
3.ライブラリ欄にChatWorkClientが追加されていることを確認し、完了

スクリプトID: 1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
バージョン: 18
ウェブアプリケーションとして登録する
作成したプログラムをウェブアプリケーションとして利用できるように登録していきます。
(デプロイ > 新しいデプロイ)
1.開かれた「新しいデプロイ」にある新しい説明文に適当な名前をつける
2.その他は参考画像通りに選択する
3.デプロイボタンを押下する



ChatWrokのwebhookに登録する
実際にChatWorkと連携するためにChatWorkにWebhookの設定も行っていきます。
(アカウント情報 > サービス連携 > Webhook > 新規作成)
1.Webhookの新規作成の名前に適当な名前をつける
2.URLにウェブアプリケーションを登録した際のウェブアプリURLをコピペする
3.その他は参考画像通りに選択する
4.作成ボタンを押下する



動作確認
実際に先ほど設定を行ったアカウントに向けて、メッセージを送り、正常に動くか確認てみましょう。
※チャット本文に問い合わせフォーマットの文字列があれば、通知し、なければ通知しないようになっているかと思います。

上記のように設定したチャットルームに通知が届いたら成功です。
これでTO付けされたチャットを問い合わせと判別して通知するbotが完成しました。
参考サイト
Chatwork Webhookについて
chatwork で自分への TO を探せるようにする
まとめ
いかがだったでしょうか?
本記事では、問い合わせフォーマット(*)に合わせて問い合わせが来た際に、問い合わせとして認識し、通知を送るbotを作成してみました。日々の業務が少しでも楽になるツールとして活用できていたら嬉しいです。
今回の改善ポイントとしては、API実行時の実行ログが取れると保守しやすかったりしますね。次回はその点を記事にしていこうと思います。お楽しみに。
