👩‍🎓

#26 【Chrome用】Google Chatのメッセージのリンクをコピーできる拡張機能を作った

2024/08/09に公開

追記

Google Chat公式でメッセージのURLをコピーする機能がが追加されたため、拡張機能を使わずともコピーが可能になりました。
本記事は公式が対応する前に執筆したものです。

概要

Google Chat にて特定のメッセージを指したいときに、そのメッセージのURLが分からないと不便でしたので、URLをコピーできる機能を作成しました。

URLをクリックすると、そのメッセージのところまで移動します。
もちろん、自分が参加していないルームのURLは開けません。(警告が出るのみ)

使い方

こちらのページからインストールしてください。
https://chrome.google.com/webstore/detail/google-chat-copy-message/fcpndhggcmeanomlafjkgdnbjkbpkeih

インストール後は、Google Chat のメッセージにフォーカスを当てるとクリップボードマークのボタンが表示されるようになり、ボタンを押すとURLがコピーされます。
image.png

仕組み

こちらの拡張機能を作る際、まずは Google Chat にメッセージごとのURLが存在するかの調査からしました。
調べてみたところ、Google Chat のメッセージごとのURLは存在するけど、見つけにくいところに隠されていることが分かりました。


「受信トレイに転送」というボタンがあり、そのボタンを押すとGmailにメールが届くのですが、
image.png

届いたメール内にあるリンクの遷移先がメッセージのURLです。
image.png

なので、今回ご紹介した拡張機能を導入しなくても、URLを知りたいメッセージを毎回受信トレイに転送すれば、一応URLはわかります。


以上より、メッセージのURLが存在することが分かったので、続いてURLの法則性を調査しました。
色々なメッセージのURLを先ほどの方法で見てみたところ、以下の法則があることがわかりました。

種別 URL
チャットのメッセージ https://chat.google.com/dm/{グループID}/{トピックID}
スペースのメッセージ https://chat.google.com/room/{グループID}/{トピックID}
スペースのスレッド内のメッセージ https://chat.google.com/room/{グループID}/{トピックID}/{データID}

グループID, トピックID, データIDについては、それぞれ data-group-id, data-topic-id, data-id という名前で、HTMLの中に埋め込まれています。


これでURLの法則性も掴めたので、ボタンがクリックされたときに javascriptでグループID, トピックID, データIDをHTMLから取得してURLを生成しています。
細かいロジックについては、公開したChrome拡張機能のソースコードから確認可能です。
Chrome拡張機能のソースコードを見る方法は、調べたらすぐ見つかると思います。

既知の不具合

コピー用ボタンが複数表示されてしまうことがあるそうです。
再現しなかったため修正はできていませんが、もし発生した場合はページを再読み込みしてください。

まとめ

以前の記事に続き、今回もChromeの拡張機能を作ってみました。
今後も業務効率化に繋がるスクリプトを思いついたら積極的に挑戦していきたいです。
最後まで読んでいただきありがとうございました。

Discussion