ObsidianでVaultまでの絶対Pathを取得する
Obsidianを多端末間で使用していると、VaultへのPathは端末によって異なります。1
PCだと、たとえば
C:/Users/user/Documents/Obsidian/Vault
みたいになります。
iOS端末だと、
capacitor://localhost/_capacitor_file_/var/mobile/Containers/Data/Application/端末ごとに異なる文字列/Documents/Vault
って感じに。
そのため、html形式でノートへの参照を取ろうとすると、端末によって参照先が異なるので、
のような問題が発生します。
htmlでVault内のフォルダを参照したいけど、Obsidianで直に書くhtmlでは相対パスをサポートしていないから、うまいこといかないとのこと。
そこで、Vaultまでの絶対Pathを取得できたら便利だと思っていたのですが、これ、 app.vault.adapter.getResourcePath("")
で取得できました。
ただ、PC環境だとVault名の後に?1701395448388
みたいな文字列がついていて邪魔なので、それも取り除きましょう。
取り除くところまで込みで、一つの関数にしておけば、あとで使いやすい。
function getAbsolutePathToVault(){ const filePath = app.vault.adapter.getResourcePath("") const regex = new RegExp(`(.*${app.vault.getName()})`); const absolutePathToVault = filePath.match(regex) return absolutePathToVault[0] }
これを使って、たとえば以下のようなコードをdataviewjsで実行すれば、Vaultまでの絶対Pathを表示できます。
```dataviewjs
function getAbsolutePathToVault(){
const filePath = app.vault.adapter.getResourcePath("")
const regex = new RegExp(`(.*${app.vault.getName()})`);
const absolutePathToVault = filePath.match(regex)
return absolutePathToVault[0]
}
const a = getAbsolutePathToVault()
dv.paragraph(a)
```
何に使えるのかは考えていませんが、何かには使えるでしょう。
-
2023-12-03 23:57 関数をちょっと直した。
それに合わせて本文も少し変更した。↩