LoginSignup
16
19

More than 5 years have passed since last update.

Slackに書いた分報をjqでまとめる雑なワンライナー

Last updated at Posted at 2015-11-26

image

こんな感じにします。

内容

curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | map((.ts | tonumber | .+32400 | todate) + " "  + .text) | .[]'

(2015/12/07 追記)別解。あんまりスマートにならなかった。tacを使う手もあったけど手元の環境に入ってなかったので、インストールしてまで…という感じ。

curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | [(.ts | tonumber | .+32400 | todate), .text] | join(" ")'

(2015/12/17 追記)markdownでtableになるバージョン。subとかgsub使いたかったけどよくわからないエラーが出ておっかけるのに時間かかりそうだったのでsplit→joinでお茶を濁す。ついでに日付は削った。

curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | [(.ts | tonumber | .+32400 | strftime("%H:%M:%S")), (.text | split("|") | join("\\|") | split("\n") | join("<br>"))] | join("|")'

(2016/2/16 追記)分報のチャンネルにbotの通知を流し始めたら、その投稿のtextがnullだったのでその対策を行ったバージョン。

curl https://slack.com/api/channels.history\?token\=XXXXX\&channel\=YYYYY | jq -r '.messages | reverse | .[] | select(.text) | [(.ts | tonumber | .+32400 | strftime("%H:%M:%S")), (.text | split("|") | join("\\|") | split("\n") | join("<br>"))] | join("|")'

slackのチャンネルの履歴の取得

https://api.slack.com/methods/channels.history
ここを読んだらだいたいできます。テストフォームがあるのでそこから試すと良いでしょう。テストフォームからトークン取るページに行ってトークンも取れます。

チャンネルIDは https://api.slack.com/methods/channels.list こっちのチャンネル一覧の結果に入ってます。

jqで加工

帰ってくるjsonのmessages項目に配列で発言が入ってて、tsがタイムスタンプ(小数)、textが本文なので、1行に時間と本文が1つ出るように加工してます。

新しい物が上にくるのでreverseしてます。
32400は時差の解消です。
.[]は配列を1要素1行に分解するものです。

16
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
19