LoginSignup
4
3

More than 3 years have passed since last update.

BacklogのIssueのタイトルとURLをマークダウンのリンクにしてクリップボードに保存するブックマークレット

Last updated at Posted at 2021-02-04

Backlogを仕事で使っていると、進捗のミーティングなどの資料作成のためにBacklogのページのリンクをコピー・アンド・ペーストするような作業があり非常にだるい。

このだるさを少しでも楽にするために、Backlogのページでブックマークレットを実行して手間を減らした。

結果

このようなhttps://アカウント名.backlog.com/view/プロジェクト名-IDBacklogのIssueのページを開いて、下記のjavascriptのブックマークレットを実行すると[チケットID チケットタイトル](https://対象のURL)というマークダウン形式のタイトルにリンクが付与されたものをクリップボードにコピーする

カンバンボード表示時にポップアップ表示させたIssueの表示にも対応している

javascript: var iframe,d;iframe=document.getElementById("issue-dialog-iframe-kanban"),d=null==iframe?document:iframe.contentWindow.document,(()=>{const e=d.querySelectorAll("span.title-group__title-text")[0].textContent,t=`[${d.querySelectorAll("span.ticket__key-number")[0].textContent} ${e}](${d.URL})`,n=d.createElement("span");n.textContent=t,d.body.appendChild(n),d.getSelection().selectAllChildren(n),d.execCommand("copy"),d.body.removeChild(n)})();

上記コードをコメントを添えながら


var iframe, d;

// iframeを取得
iframe = document.getElementById("issue-dialog-iframe-kanban");

//iframの有無でカンバンボード表示時か、対象のIssueのページを開いているか判断する
if(iframe == null) {
  d = document
} else {
  d = iframe.contentWindow.document
}


(() => {
  // backlogのページからタイトルなど必要な要素を集める
  const ticketName = d.querySelectorAll("span.title-group__title-text")[0].textContent;

  const ticketId = d.querySelectorAll("span.ticket__key-number")[0].textContent;
  const url = d.URL;

  // クリップボードに保存する文字列を構築
  const display = `[${ticketId} ${ticketName}](${url})`;

  // 文字列をコピーするために適当なdom要素を作成し、body要素の子要素に追加する
  const tmp = d.createElement('span');
  tmp.textContent = display;
  d.body.appendChild(tmp);

  // bodyにdom要素を追加していると、対象の要素を選択できる
  d.getSelection().selectAllChildren(tmp);
  // クリップボードに選択要素をコピー
  d.execCommand("copy");
  // 追加した要素を削除して後始末
  d.body.removeChild(tmp);
})();
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3