API

【GAS】chatworkAPIでチャットにメッセージを投稿する2つの方法

chatworkAPIを使うための事前準備

chatworkでAPIを使うためには事前準備として設定が必要です。

といってもAPIトークンを取得するだけなんですがね。


chatworkの管理者であることを前提として説明していきます。もちろんchatworkのアカウントを持っていることも大事な前提です。

※自分が管理者ではない場合は管理者にAPIトークンを発行してもらう必要がある

事前準備

事前準備はAPIトークンを取得するだけです。

chatwork右上のアカウントメニューをひらく


サービス連携をクリックする


サービス連携画面のAPIトークンをクリックする


赤枠内にあるAPIトークンをコピーする(ここでは見えないようにマスクしています)


以上でAPIトークンの取得が完了です。

メッセージを投稿するルームIDを取得する

ルームIDはブラウザのアドレスバーにあります。

「chatwork.com/#!rid*********」の*********の部分がルームIDです。下の画像の赤枠部分です。


ルームIDもあっけなくゲットしてしまいました。

簡単にできそうな予感しかしないです。

chatworkAPIを使ってメッセージを投稿する2つの方法

chatworkAPIを利用してメッセージを投稿するのも普通に接続する方法と、ライブラリを使う方法があります。

まずは普通に接続してメッセージを送ります。

普通の接続方法

const sendChatwork = () => {
  // endpointの定義
  const roomId = 'ルームIDが入ります'
  const endpoint = `https://api.chatwork.com/v2/rooms/${roomId}/messages`

  // APIトークン
  const token = 'APIトークンが入ります'

  // リクエストボディ
  const message = 'チャットワークのテストだよーん'

  // リクエストボディにはメッセージのみを格納
  const payload = {
    body: message,
  }

  // ヘッダーにトークンをセット
  const headers = {
    'x-chatworktoken': token,
  }

  // optionsにheadersとpayload(リクエストボディ)をセット
  const options = {
    headers, payload
  }

  const response = UrlFetchApp.fetch(endpoint, options)
  console.log(response.getResponseCode())
}


実行結果


メッセージがとんでいるので成功ですね。

世の中いろんなAPIがありますが、使い方はだいたい一緒です。


まずはエンドポイント(URL)を指定します。必要だったらクエリ(URLにくっつける検索条件みたいなの)をくっつけます。

トークンをわたして、何らかの情報をわたす必要があればリクエストボディ(payload)に入れてわたしてあげます。


上のコードは、赤字の部分を実際のAPIトークンに書き換えて、青字の部分をメッセージを投稿したいルームIDに書き換えれば使用可能です。

ChatWorkClientを使った接続方法

お次はChatWorkClientというライブラリを使う方法です。

自分のGoogle Apps Scriptエディタで利用するにはライブラリを追加しないといけません。

スクリプトIDでライブラリを検索します。

スクリプトID

1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav


ライブラリ検索画面でChatWorkClientが出てきたら「追加」をクリック


で、コードを書きます。実際のコードはというと、

const useChatWorkClient = () => {
  // ChatWorkClientクラスのファクトリメソッドを使ってオブジェクトを生成
  const token = 'APIトークンが入ります'
  const chatworkClientApp = ChatWorkClient.factory({ token })

  // optionsにいれる情報を定義
  const room_id = 'ルームIDが入ります'
  const body = 'ChatWorkClientアプリを使ってみた!'
  const options = {
    room_id, body
  }

  chatworkClientApp.sendMessage(options)
}


とまあこんな感じになりまして、


実行結果


使い方のドキュメントがなかったのでgithubのソースコードを見ながら「こんな感じか!」と書いたので書き方が間違ってるかもしれません。まぁ、メッセージが投稿されたので多分合ってると思います。


一応説明します。

ChatWorkClientライブラリのクラスからfactoryメソッドでオブジェクトを生成します。そのときにfactoryメソッドにAPIトークンをわたしてあげます。

optionsには投稿するルームIDとメッセージを入れてsendMessageメソッドで提出!


とても簡単にAPI経由でチャットワークにメッセージを送れます。

(わざわざライブラリを使うほうが書き方を読み解かないといけなくて面倒くさい気が。。。)


しゅわっち

Copied title and URL