サイトのタイトルやURLを Markdown などの形式でコピーできるブラウザ拡張機能「EasyCopyLink」を公開しました


日々のコピペ作業を効率化したく作成＆公開しました。

## どんな拡張機能？

ブラウザで閲覧しているサイトのタイトルやURLを Markdown や RichText などお好きなフォーマットで右クリックメニューからクリップボードに簡単にコピーできる拡張機能です。

Chrome と Edge で使うことができます。

[![EasyCopyLink](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/17717cb7-1147-f296-f2fd-235a0ca89a3e.png)](https://chrome.google.com/webstore/detail/easycopylink/bgilfgebpgfenjmenobinigndpommjke?hl=ja)

https://twitter.com/loftkun/status/1701881749679321384


さっそく拡張機能の使い方とソースコードのポイントについてご紹介したいと思います。

## さっそく使ってみよう

Chrome や Edge で [Chrome ウェブストア](https://chrome.google.com/webstore/detail/easycopylink/bgilfgebpgfenjmenobinigndpommjke?hl=ja) を開き、`Chromeに追加` というボタンを押すとブラウザに拡張機能をインストールできます。

以下のリンクからもインストールできます。

https://chrome.google.com/webstore/detail/easycopylink/bgilfgebpgfenjmenobinigndpommjke?hl=ja

## コピーしてみよう

お好きなサイト( 例: https://www.yahoo.co.jp/ ) を開いた状態で右クリックすると以下のスクリーンショットのように `EasyCopyLink` のメニューが表示されます。

`Title` や `URL` など、お好きな形式をクリックいただくとクリップボードに格納されます。

[![EasyCopyLink](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/17717cb7-1147-f296-f2fd-235a0ca89a3e.png)](https://chrome.google.com/webstore/detail/easycopylink/bgilfgebpgfenjmenobinigndpommjke?hl=ja)

それぞれの形式でコピーした後、貼り付けるとどのようになるか次章でご紹介します。

## 貼り付けてみよう

### `Title` としてコピーし、貼り付けた場合:

サイトのタイトルの文字列を簡単に取得して貼り付けることができます。
Webページ上にサイトのタイトルの文字列が表示されていない場合に活躍します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/06f29449-bfe9-e2c0-9503-fac98703ac2e.png)

### `URL` としてコピーし、貼り付けた場合:

サイトのURLの文字列を簡単に取得して貼り付けることができます。
確実にプレーンなテキストとしてURL文字列が欲しいときに活用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/44e2691d-3ae9-18a6-8b41-12b9f6339ec7.png)

### `Title URL` としてコピーし、貼り付けた場合:

簡単にタイトル+改行+URLの形式で貼り付けることができます。
テキストファイルなどにタイトルやURLを一気に貼り付けたい場合に活躍します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/115e43df-03b5-cae2-13a3-d84263c3c802.png)

### `HTML` としてコピーし、貼り付けた場合:

簡単にHTMLのリンク記法の形式で貼り付けることができます。
Webサイトにリンクを埋め込みたいときなどに便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/38581751-5364-6c61-7ccb-b8ca5fbd707d.png)

### `Markdown` としてコピーし、貼り付けた場合:

簡単にMarkdownのリンク記法の形式で貼り付けることができます。
Markdownファイル(*.md)に貼り付ける以外にも、Markdown記法に対応しているサイトやツールで文書を執筆する際に役立ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/4310460d-33e8-4194-2d11-26dbef517a20.png)

### `RichText` としてコピーし、貼り付けた場合:

簡単にリンク付きの文字として貼り付けることができます。
Slackなどに貼り付けてリンクを共有するのに便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21106/0f7d524b-a450-4683-af76-234d272f78c5.png)

## ソースコード

以下で公開しています。

https://github.com/loftkun/EasyCopyLink

### どうやってクリップボードに格納しているのか

`document.execCommand("copy")` を実行した際に呼び出される `listener` で `event.clipboardData.setData()` しています。

RichTextをクリップボードに格納したい場合は、`text/plain` としてプレーンな文字列( 本拡張機能の場合はサイトのタイトル )、`text/html` としてHTMLタグ ( 本拡張機能の場合はサイトのURLにリンクするHTMLのリンク記法 ) を設定すればOKです。

```javascript
const copy = (text, html) => {
  const listener = (event) => {
    event.clipboardData.setData("text/plain", text);
    if (html) {
      event.clipboardData.setData("text/html", html);
    }
    event.preventDefault();
  };
  document.addEventListener("copy", listener);
  document.execCommand("copy");
  document.removeEventListener("copy", listener);
}
```

## v1.2 の新機能

表示on/off機能を追加しました。
普段使うフォーマットのみを右クリックメニューに表示できます。

https://twitter.com/loftkun/status/1743466079417237697

## まとめ

拡張機能の機能や実装についてご紹介しました。
皆さまの日々のコピペ作業の効率化に役立ちましたら幸いです。

ご要望やお気づきの点がございましたらコメントなどでぜひお知らせください。