2024年3月12日火曜日

Google Chat に Webhook で投稿するときに文字色を変えたい

Google Chat に Webhook で投稿するときに文字色を変えたい

発端

「開始時と終了時にChatにメッセージ投げてくれるのはいんだけど、同じ文字数で同じ色だとわかりにくいんだよね。」
と言われてしまった。俺もそう思ってた。

どうすればいい?

普通にChatにメッセージ投げる場合は

{ "text":"処理を開始しました" }

と簡単なjsonをWebhookのurlにcurlでpostしれやればOK。文字を太くしたり、斜体にするのもおなじみのMarkdown表記で大丈夫だが、色を付けるとなると途端に面倒になる。

文字に色をつけてChatに投稿するにはCard V2をpostする必要がある。
最低限、一部の文字に色を付けるには以下のようなjsonにすればよい。

{ "cardsV2": [ { "card": { "sections": [ { "widgets": [ { "decoratedText": { "text": "処理を<font color=\"#ff0000\">開始</font>しました" } } ] } ] } } ] }

一気に面倒になった。
[]{}の具合が変更するときに面倒なら、こんな具合にjqを使ってみるのもいいかも。

jq -c -n '.cardsV2 = [.card.sections = [.widgets = [.decoratedText.text = "処理を<font color=\"#ff0000\">開始</font>しました"]]]'