LoginSignup
2
4

More than 3 years have passed since last update.

SharePointのリストをクリップボードにコピーする

Last updated at Posted at 2019-06-29

SharePointのリストは、選択しようとするとドラッグしようとしてしまったり、リスト項目の選択操作になってしまったりして、単純に文字列をクリップボードにコピーしたい などといったことができません。

こんな時はWebコンソールの出番です。

  1. 該当のリストを表示する
  2. クリップボードにコピーしたい項目のみを表示したい順番で表示するビューを作るimage.png
  3. Webコンソールを開く
  4. コンソールに以下のコードを入力する
  5. コンソールに表示された文字列をクリップボードにコピーする
Webコンソールに貼り付けるコード
let a = "";
document.querySelector(".ms-DetailsList-contentWrapper").querySelectorAll(".ms-List-cell").forEach((e) => {
  e.querySelectorAll(".ms-DetailsRow-cell").forEach((l) => {
    a += !l.classList.contains("ms-DetailsRow-cellCheck") && l.textContent != "" ? l.textContent.trim() + "\t" : "";
  });
  a += "\n";
});
console.log(a);
スクリーンショット部分のみの出力例
2019/07/14   SBC://5
2019/07/17   Facelook Part.8
2019/07/19   もくもく会@にしとも広場

やっていること

ms-DetailsList-contentWrapperというのは、SharePointのリストテーブルの「データ部分のみ」を囲んでいるdivのクラスです。HTMLのテーブルでいうtbodyみたいなものです。

この要素内のms-List-cellクラスを取得すると、すべての行が、その下にある`ms-DetailsRow-cellというクラスを取得するとその中の各セルが取得できます。

そのなかの「テキスト部分だけ」を出力し組み合わせていくことで、リストのテキスト部分のみを抽出できます。

ただし、このままだと各行のチェックボックスまで抽出してしまうため、チェックボックスセルに付いているms-DetailsRow-cellCheckというクラスを検出して、それを出力から除外します。

ブックマークレットにしました

比較的頻繁に使うので、ブックマークレットにしました。ついでに以下の機能を追加しています

  • リスト中のどの項目もチェックしていない場合は、すべての項目をコピー
  • リスト中のいずれかの項目がチェックされていたら、それらの項目をコピー

また、コピーできる文章は開発者モードのコンソールではなく、新しいウィンドウに表示されますので、全選択してコピーします。

javascript:a="";f=null==document.querySelector(".ms-DetailsRow-cellCheck div:first-child[aria-checked=true]");document.querySelector(".ms-DetailsList-contentWrapper").querySelectorAll(".ms-List-cell").forEach(function(c){if("true"===c.querySelector(".ms-DetailsRow-cellCheck div:first-child").getAttribute("aria-checked").toLowerCase()||f)c.querySelectorAll(".ms-DetailsRow-cell").forEach(function(b){a+=b.classList.contains("ms-DetailsRow-cellCheck")||""==b.textContent?"":b.textContent.trim()+"\t"}),a+="\n"}); window.open("about:blank").document.write("<pre>"+a+"</pre>");

コンパイラはいつものを使いました。コンパイル前のソースはgistに公開しています。

2
4
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
2
4