GAS × Chatwork APIのChatwork clientライブラリを解説

みなさん、こんにちは!
現役エンジニアの”ます”です。

今回はGoogle Apps Scriptでチャットワークの自動化をする際に活躍するChatworkClient for Google Apps Scriptというライブラリについて紹介いたします。

ChatworkClient for Google Apps ScriptはGoogle Apps Scriptのライブラリです。

ライブラリとは

プログラムを作成する中で何度も使うような機能ってありますよね。
それを毎回ゼロから作るのは大変だと思います。

ライブラリとはあらかじめ用意された便利機能のまとまりを簡単に取り込んで使うことのできるものです。

Google Apps Scriptでもライブラリが豊富に存在し、今回使うChatworkClient for Google Apps Scriptもそのライブラリの中の1つになります。

ライブラリは先人の技術者が作成してくれているものが多く、その使い方はライブラリによって異なります。
ChatworkClient for Google Apps Scriptではコチラにライブラリが公開されており、
何ができてどのように使うのかを調べることができます。

本記事ではそのライブラリの内容をすべて解説していこうと思います。

ChatworkClient for Google Apps Scriptの導入方法

まずはライブラリの導入方法です。

GASにChatworkClientのライブラリを追加しよう

スクリプトページを開き、画面左側のサイドバーにある「ライブラリ」をクリックします。

Google Apps Scriptの導入についてはこちらの記事をご参考にしてみてください。

Google Apps Scriptの導入方法

今回はスタンドアロン型のスクリプトを導入しています。

「ライブラリの追加」というポップアップが表示されるとスクリプトIDを入力する箇所があるので

1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav

を入力し、「検索」をクリックしてください。

するとこのように「ChatWorkClient」と表示されます。
バージョンは18を選択します。(2022年8月時点)

追加をクリックするとこのライブラリを使用する準備ができます。

チャットワークのトークンを取得しよう

ChatworkClient for Google Apps ScriptはチャットワークのAPIを活用したライブラリです。
チャットワークAPIの利用準備については下記の記事で詳しく解説しているため、ご参考にいただけましたらと思います。

Chatwork APIの利用申請方法

では、続いてはChatworkClient for Google Apps Scriptでは何ができるのかを解説していきます。

ChatworkClient for Google Apps Scriptでできること

ChatworkClient for Google Apps ScriptではChatwork APIを用いた様々な機能を簡単に使える機能が多く存在しています。
Chatwork APIでできることの多くをChatworkClient for Google Apps Scriptでも実装していますが、Chatwork APIでできることがChatworkClient for Google Apps Scriptではできないこともあります。

自分が使いたい機能が簡単に実装できる場合はこのChatworkClient for Google Apps Scriptを利用する方が開発工数が減り効率的に開発できると思います。

ChatworkClient for Google Apps Scriptをプログラム上で使用するときはAPIトークンを入力する必要があります。
そして下記のように宣言をし、利用準備を行います。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});

トークンを取得する方法は上記で紹介している「Chatwork APIの利用申請方法」で紹介しておりますので、ご参照ください。

自分のルーム一覧を取得

まずは自分のチャットワークアカウントに存在しているルームの一覧を取得するプログラムです。
ルームの一覧を取得することで、自分がどんな名前のグループに所属していて、
そのグループがどんなルームIDなのかを判別することができます。

他のメソッドと合わせて利用することが多く、メッセージ送信機能に必要なルームIDを取得する際にも便利です。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
let result = CLIENT.getRooms();

resultにはJSON型でデータが返され、このようなデータが入っています。

[
  {
    "room_id": 123,
    "name": "Group Chat Name",
    "type": "group",
    "role": "admin",
    "sticky": false,
    "unread_num": 10,
    "mention_num": 1,
    "mytask_num": 0,
    "message_num": 122,
    "file_num": 10,
    "task_num": 17,
    "icon_path": "https://example.com/ico_group.png",
    "last_update_time": 1298905200
  }
]

メッセージ送信

チャットワークAPIを活用して指定のルームに指定のメッセージを送りたい場面を多く発生すると思います。
本サイトでも紹介した「Chatworkの予約送信機能を実装しよう」でも指定のルームIDにメッセージを送信していますが、
ChatworkClient for Google Apps Scriptのライブラリではその機能を使う際も簡単に行なえます。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
let params = {
  room_id: 'ルームIDを指定',
  body: '送信するメッセージを入力',
  self_unread: 1 // この行は必須入力ではないです。
};
CLIENT.sendMessage(params);

room_idには送信先のルームIDを入力します。

bodyには送信するメッセージを入力します。

self_unreadに関しては自分が送信したメッセージをデフォルトでは既読状態となりますが、
1を入力すると未読状態となり、自分でもメッセージを通知したことがチャットワーク上で確認しやすくなります。

マイチャットへのメッセージを送信

ライブラリを使わないと非常に面倒な設定があるのですが、たった3行でメッセージを送信することができます。
プログラムを組んでいるときにマイチャットへログやメモを残したいときがあるかもしれません。
その際に便利なメソッドとなります。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
let message = '送信するメッセージをここに入力';
CLIENT.sendMessageToMyChat(message);

指定したチャットのメッセージを取得

次に特定のルーム内のメッセージを読み取りたいときに便利な機能がこちらです。
ルームIDを指定するだけで、そこに送られたメッセージを読み取ることができます。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
let room_id = '指定のルームIDを入力';
let result = CLIENT.getMessages(room_id);

こちらを実行するとresultには下記のようなデータが入力されます。
また、チャットワークAPIでは取得件数を調整することができますが、ChatworkClient for Google Apps Scriptでは件数をしてすることができないので、この点は手動で調整する他ないですね。

[
  {
    "message_id": "5",
    "account": {
      "account_id": 123,
      "name": "Bob",
      "avatar_image_url": "https://example.com/ico_avatar.png"
    },
    "body": "Hello Chatwork!",
    "send_time": 1384242850,
    "update_time": 0
  }
]

タスク追加

チャットワークを業務で使用していると、タスクを追加したりされたりすることがあるでしょう。
私が務めている会社でもこのタスクのやりとりは頻繁に行っており、こちらも自動化することが可能です。

少々必要な情報が多いため設定には気をつけましょう!

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
<span class="nx">let date</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">('2023-01-01'</span><span class="p">); // 締切日をこちらで指定します。(分までの指定が可能です。)</span>
<span class="kd">let</span> <span class="nx">limit_timestamp</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">round</span><span class="p">(</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getTime</span><span class="p">()</span> <span class="o">/</span> <span class="mi">1000</span> <span class="p">); // 指定する桁数の調整を行います。</span>
let params = {
  room_id: 'ここにタスク作成先のルームIDを入力',
  body: 'ここにタスク内容を入力',
  to_id_list: [/*アカウントIDを,(カンマ)繋ぎで指定します。*/], // タスクをこなす人の設定です。1人から複数人の指定が可能です。
  limit: limit_timestamp,
}

指定したチャットのタスク一覧を取得

タスクが多くなってくると管理も大変なことと思います。
ChatworkClient for Google Apps Scriptではタスクの一覧を取得することも可能です。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
let room_id = 'ここにタスク一覧を取得したいルームのIDを入力';
// paramsは必須ではありません。
let prams = {
  account_id: 'タスクの担当者のアカウントID',
  assigned_by_account_id: 'タスクの依頼者のアカウントID',
  status: open // openまたはdoneで指定します。
}
let result = CLIENT.getRoomTasks(room_id, params);

こちらを実行するとresultには下記のようなデータが入力されます。

[
  {
    "task_id": 3,
    "account": {
      "account_id": 123,
      "name": "Bob",
      "avatar_image_url": "https://example.com/abc.png"
    },
    "assigned_by_account": {
      "account_id": 456,
      "name": "Anna",
      "avatar_image_url": "https://example.com/def.png"
    },
    "message_id": "13",
    "body": "buy milk",
    "limit_time": 1384354799,
    "status": "open",
    "limit_type": "date"
  }
]

自分のタスク一覧を取得

どのルームかに限らず、自分のタスクの一覧を取得したいときはこちらを活用します。

const CLIENT = ChatWorkClient.factory({token: 'ここにChatwork TOKENを入力'});
// paramsは必須ではありません。
let params = {
  assigned_by_account_id: 'タスクの依頼者のアカウントID',
  status: 'タスクのステータス' // openまたはdoneで指定します。
}
let result = CLIENT.getMyTasks(params);

こちらを実行するとresultには下記のようなデータが入力されます。

[
  {
    "task_id": 3,
    "room": {
      "room_id": 5,
      "name": "Group Chat Name",
      "icon_path": "https://example.com/ico_group.png"
    },
    "assigned_by_account": {
      "account_id": 456,
      "name": "Anna",
      "avatar_image_url": "https://example.com/def.png"
    },
    "message_id": "13",
    "body": "buy milk",
    "limit_time": 1384354799,
    "status": "open",
    "limit_type": "date"
  }
]

実行する際のGoogleからの承認方法についてはコチラを参照ください。

ChatworkClient for Google Apps Scriptでできないこと

Chatwork APIでは様々なエンドポイントがあり、上記で紹介したChatworkClient for Google Apps Scriptのライブラリでは指定できない細かな設定や細かな調整が可能です。
まずはChatworkの公式で出しているリファレンスを見てみましょう!

また、今後の記事でもチャットワークAPIでできることの紹介をまだまだしていきますので、
ぜひチェックしてくださいますと幸いです。

まとめ

今回はChatworkClient for Google Apps Scriptの紹介をいたしました。
ChatworkClient for Google Apps Scriptでも調整が可能なgetやpostなどの説明はまたの機会にさせてもらえたらと思います。

実際に業務でも使える機能ばかりなので、ぜひご活用いただき効率的に自動化の一歩を踏み出していただけましたら幸いです。

Google Workspaceを活用している場合はGoogle Apps Scriptを覚えると業務の効率化および自動化ができます。
Google Apps Scriptが学べるスクールはコチラで紹介しています。よかったら見てみてください。

Google Apps Scriptを学べるスクール3選

Google Apps Scriptが学べたらコチラの記事で収益化してみてはいかがでしょうか?

Google Apps Scriptのプロが教える!成功するGAS副業完全ガイド

最後までお読みいただきありがとうございました。

最新情報をチェックしよう!