chatworkの投稿データをAPIで取得

Chatworkでのやり取りを使って

モチベーション(やる気)を出すために

案件の簡単な進捗管理を作ってみたく思った

ChatWorkのデータを取得してみよう

チャットワークでAPIで投稿内容を取得する

ttps://developer.chatwork.com/docs/getting-started

Chatwork画面右上の「利用者名」をクリックして表示されるメニューの「サービス連携」を選択してください。
サービス連携画面が開きますので、左側のメニューから「APIトークン」を選択してください。とのこと

まずは、APIトークンの取得する

APIの動作確認には、まずは、Curlがお勧めなので

ttps://qiita.com/n0bisuke/items/25813fba8120451d40da

を、参考に

curl -X GET -H “X-ChatWorkToken: 自分のAPIトークン” “https://api.chatwork.com/v1/rooms/{room_id}/messages?force=0”

ルームIDがあれば、チャンネルのルームの情報が取得できそう

{room_id}
は、
チャンネルを開いた時の
https://www.chatwork.com/#!rid36010xxxx
idのあとの数字(現在は9桁)

まずは、curlで、投げてみる

curl -X GET -H “X-ChatWorkToken: 自分のAPIトークン” “https://api.chatwork.com/v1/rooms/{room_id}/messages?force=0”

{“errors”:[“Chatwork API v1 is now obsolete. Please use the latest version.”]}

で、怒られた

ttps://developer.chatwork.com/reference/get-rooms-room_id-messages

本家で調べたら

ttps://api.chatwork.com/v2/rooms/{room_id}/messages

との事

v2でないと、行けないよう

curl -X GET -H “X-ChatWorkToken: 自分のAPIトークン” “https://api.chatwork.com/v2/rooms/{room_id}/messages?force=0”

よっしゃ!!つながった。



Jsonは、ブラウザで解析ができるので

curl -X GET -H “X-ChatWorkToken: 自分のAPIトークン” “https://api.chatwork.com/v2/rooms/{room_id}/messages?force=0″ > chatwork.json

と、jsonの拡張子で吐き出して

ChromeでなくFireFoxで表示しましょう。

見れた。


投稿の100件が取り込めている

これで行けそう

タイムスタンプが send_timeが10桁の数字
これを変換ししないと

これが、投稿時刻の年月日時分のはず


Googleで
chatwork api timestamp
で、検索

ttps://freeelover.com/2022/09/gas/gas%E6%B4%BB%E7%94%A8%E6%B3%95/1130/
ttps://www.shanaidx.com/chatwork_task/
// limit = new Date(json[i].limit_time * 1000 );   // UNIXTIMEを変換してdateにセット

こんなのがあったので、UNIXTIMEというものか?

Googleで
UNIXTIME から 日付に PHP
で、検索

ttps://onga-tec.hatenadiary.jp/entry/2016/08/19/PHP_unixtime%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%97%A5%E4%BB%98%E3%81%AE%E5%A4%89%E6%8F%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88

にあったので、
これで、行きそう。

PHPで、直接確認するために

Googleで
コマンドラインで PHP を実行
で、検索

ttps://www.php.net/manual/ja/features.commandline.usage.php

php -r ‘print_r(get_defined_constants());’
こんなことできるんだ

php -r ‘echo time();’
1725521712

php -r ‘echo date(‘Y/m/d H:i:s’, time());’

エラーになった

’が重なったら、ダメですね

php -r “echo date(‘Y/m/d H:i:s’, time());”

表示してくれた

APIで取り込んだデータも

10桁なので、そのままいけそう

取り込んだ、データで、変換してみる

php -r “echo date(‘Y/m/d H:i:s’, 1725106055);”

上手く行った

準備ができたので、まずは

PHPを使って、結果を、GoogleSpreadSheetに貼り付けるものを、作って行こう

それから、データベース(Mysql)へ、吐き出すプログラムをPHPで作って、進捗管理に使って行こうと思う

とりあえず、吐き出したJsonを使って、CSVを書き出してみた。

これで、ExcelやGoogleSpreadSheetには、読み込める

2回目の呼び出しは

forceintegerDefaults to 0

forceはドキュメントより

強制的に最大件数まで取得するかどうか。
0を指定した場合(既定)は前回取得分からの差分のみを返しますが、1を指定した場合は強制的に最新のメッセージを最大100件まで取得します。

の引数は0だと、前回の続きなので、繰り返すと返信がなくなる

返信がない場合、1にするといい

余談ですが

Unixtime
1970年からの経過秒数
なんだ。。

php -r “echo date(‘Y/m/d H:i:s’, 9999999999);”

2286/11/21 02:46:39

260年後には、大騒ぎになるのかな?

残念ながら、そこまでは、生きて、立ち会うことは、少し難しそうですが。