2021年12月01日

Slackのpermalinkから投稿日時を得るCalc関数

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)
  1. A2はURLの入っているセル
  2. RIGHT関数で末尾16桁の数字を抜き出し
  3. マイクロ秒(1/100000)を秒にして
  4. *TIMEVALUE("0:0.1") で単位を整えて (= 1/864000 = 24時間の秒数の逆数)
  5. UNIX timeの起算日1970年1月1日を足して
  6. タイムゾーンの分9時間足す

TIMEVALUEはフォーラムからのコピペなので細かい理論はわからない。 URLに含まれるのがメッセージのtsで、チャンネルごとに一意なタイムスタンプというのはドキュメントにあったものの、この書式が永遠に変わらない保証はないので自己責任で。

おまけ

rubyでも。入力値が信頼できないときはURI.parseなどでチェックする。

def slack2time(url)
  ts = url.split("/").last.sub("p", "").to_i / 1000_000
  Time.at(ts)
end

参考リンク



posted by かぷらす at 21:41| Comment(0) | 作業記録・備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください