Skip to content

Instantly share code, notes, and snippets.

@t3yamoto
Last active May 27, 2024 05:52
Show Gist options
  • Save t3yamoto/9b19180571e81fc7cccaea429be3349b to your computer and use it in GitHub Desktop.
Save t3yamoto/9b19180571e81fc7cccaea429be3349b to your computer and use it in GitHub Desktop.
Boxで開いているフォルダをBoxDrive(Finder)で開きたい時に便利なブックマークレット

Boxで開いているフォルダをBoxDrive(Finder)で開きたい時に便利なブックマークレット

以下の様に、ブラウザでBoxのフォルダを開いている時に、当該フォルダをBoxDrive(Finder)で開きたくなることがある。そんな時にこのブックマークレットを使用すれば、いい感じにパスをコピーできる。

6A4A264E-CB08-4D8C-8CE5-A0024379A771

インストール方法

以下のスクリプトをChromeのブックマークに任意の名前で登録する。 ([ブックマークマネージャー] > [新しいブックマークを登録]) ブックマークバーとかに置いとくと良いかも。

2020-09-14 Boxの新UIに対応

MacOS, Linux 版

javascript: (function () { let path = "~/Box/"; const dotButton = document.querySelectorAll( ".ItemListBreadcrumb > button")[0]; if (dotButton) { dotButton.click(); path += [ ...document.querySelectorAll( "a[data-resin-target='openfolder'].menu-item"), ] .map((e) => e.innerText) .filter( (v) => v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); if (!path.endsWith("/")) path += "/"; } path += [...document.querySelectorAll(".ItemListBreadcrumb-listItem")] .map((v) => v.innerText) .filter( (v) => v !== "" && v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); !(function (a) { var b = document.createElement("textarea"), c = document.getSelection(); (b.textContent = a), document.body.appendChild(b), c.removeAllRanges(), b.select(), document.execCommand("copy"), c.removeAllRanges(), document.body.removeChild(b); })(path); document.body.click(); })();
MacOS Monterey 版

2021-11-10 追記
MacOS Monterey、かつ Box Drive v2.24 以降の場合、マウントパスが ~/Box/ ではなく ~/Library/CloudStorage/Box-Box/ に変更される。

参考) https://support.box.com/hc/ja/articles/4407737091219-macOS%E3%81%AEFile-Provider-Extension-FPE-%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AEBox-Drive%E3%81%AE%E4%BD%BF%E7%94%A8

javascript: (function () { let path = "~/Library/CloudStorage/Box-Box/"; const dotButton = document.querySelectorAll( ".ItemListBreadcrumb > button")[0]; if (dotButton) { dotButton.click(); path += [ ...document.querySelectorAll( "a[data-resin-target='openfolder'].menu-item"), ] .map((e) => e.innerText) .filter( (v) => v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); if (!path.endsWith("/")) path += "/"; } path += [...document.querySelectorAll(".ItemListBreadcrumb-listItem")] .map((v) => v.innerText) .filter( (v) => v !== "" && v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); !(function (a) { var b = document.createElement("textarea"), c = document.getSelection(); (b.textContent = a), document.body.appendChild(b), c.removeAllRanges(), b.select(), document.execCommand("copy"), c.removeAllRanges(), document.body.removeChild(b); })(path); document.body.click(); })();

Windows 版

javascript: (function () { let path = "%USERPROFILE%/Box/"; const dotButton = document.querySelectorAll( ".ItemListBreadcrumb > button")[0]; if (dotButton) { dotButton.click(); path += [ ...document.querySelectorAll( "a[data-resin-target='openfolder'].menu-item"), ] .map((e) => e.innerText) .filter( (v) => v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); if (!path.endsWith("/")) path += "/"; } path += [...document.querySelectorAll(".ItemListBreadcrumb-listItem")] .map((v) => v.innerText) .filter( (v) => v !== "" && v !== decodeURI( "%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB")) .join("/"); !(function (a) { var b = document.createElement("textarea"), c = document.getSelection(); (b.textContent = a), document.body.appendChild(b), c.removeAllRanges(), b.select(), document.execCommand("copy"), c.removeAllRanges(), document.body.removeChild(b); })(path); document.body.click(); })();

旧バージョン

// javascript:(function(){let path="~/Box/";const dotButton = document.querySelectorAll(".breadcrumb-item.no-shrink > button")[0];if(dotButton){dotButton.click();path+=[...document.querySelectorAll("a[data-resin-target='openfolder'].menu-item")].map(e=>e.innerText).reverse().join("/")+"/";};path+=[...document.querySelectorAll(".breadcrumb-item:nth-child(n+2):not(.no-shrink)")].map(v=>v.innerText).join("/");!function(a){var b=document.createElement("textarea"),c=document.getSelection();b.textContent=a,document.body.appendChild(b),c.removeAllRanges(),b.select(),document.execCommand("copy"),c.removeAllRanges(),document.body.removeChild(b)}(path);document.body.click()})();

使い方

Boxでフォルダを表示している状態(最初の画像みたいな状態)で、登録したブックマークを呼び出すと、~/Box/miyamoto/box/to/local/path の様な形式でクリップボードにコピーされる。 Finder で cmd + shift + g でフォルダ移動のダイアログを呼び出し、貼り付けて移動する。

動作確認環境

  • macOS Catalina 10.15.4
  • Chrome 83.0.4103.97
@since1899acm
Copy link

大変便利なブックマークレットありがとうございます。重宝しております。
boxには分類ラベルというものがあり、これもクリップボードにコピーされます。
https://support.box.com/hc/ja/articles/1500003233281-%E5%88%86%E9%A1%9E%E3%83%A9%E3%83%99%E3%83%AB
分類ラベルをコピーしなくすることは可能でしょうか。

@t3yamoto
Copy link
Author

@since1899acm
こんにちは。残念ながら私の利用環境で分類ラベルを試す権限を持っておらず、試すことができません...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment