APIは不要なのでbot作るまでもない管理作業に便利。
LibreOffice Calcでしか試してない。おそらくExcelやGoogle スプレッドシートでも動くはず。
Slackのメッセージ個別リンクは https://ワークスペース名.slack.com/archives/チャンネルID/p数字16桁
のようなやつ。この末尾の数字は投稿した日時をUNIX時間のマイクロ秒で表したものなのでパースするだけで変換できる。
=RIGHT(A2,16)/100000*TIMEVALUE("0:0.1")+DATEVALUE("1970-01-01")+TIME(9,0,0)
A2
はURLの入っているセル- RIGHT関数で末尾16桁の数字を抜き出し
- マイクロ秒(1/100000)を秒にして
*TIMEVALUE("0:0.1")
で単位を整えて (= 1/864000 = 24時間の秒数の逆数)- UNIX timeの起算日1970年1月1日を足して
- タイムゾーンの分9時間足す
TIMEVALUEはフォーラムからのコピペなので細かい理論はわからない。
URLに含まれるのがメッセージのts
で、チャンネルごとに一意なタイムスタンプというのはドキュメントにあったものの、この書式が永遠に変わらない保証はないので自己責任で。
おまけ
rubyでも。入力値が信頼できないときはURI.parse
などでチェックする。
def slack2time(url)
ts = url.split("/").last.sub("p", "").to_i / 1000_000
Time.at(ts)
end
参考リンク
- Macro to convert 13 digit UNIX time/date - OpenOfficeのフォーラム
- Convert UNIX timestamp - 同
- message event | Slack -
ts
の言及元