## 制限事項
==既存の画像ファイルが、新規作成で指定されるパスと異なる場合に編集できない==
## 経緯
[[📓図はdraw.ioを使ってPNGで管理する]]ようにしている。ただ、新規ファイルを作成するときの手順が若干面倒。
1. Attachementを配置するのに適切な[[SVG]]ファイルのパスを作成/コピーする
2. ↑のパスに[[draw.io]]でファイルを新規作成する
時間にして10~20秒程度だが、地味にこの手間が障壁となり『文字でいいや』となってしまう。ただ、できれば図を使って分かりやすくしたいことが多い。
## やり方
[[Templater]]を使って以下のtemplateを作る。実行しやすいコマンド名にするといい。私は`Open in draw.io`にした。
```js
<%*
const cur = app.workspace.activeLeaf.view.editor.getCursor()
const token = app.workspace.activeLeaf.view.editor.getClickableTokenAt(cur)
const attachment = await app.vault.getAvailablePathForAttachments(token.text, "", app.workspace.getActiveFile())
const file = `"${attachment}"`
tp.user.drawio({file})
%>
```
[[TemplaterからOS標準シェルのコマンドを実行]]する必要があるため、`drawio`というUser Functionを作成し、`tp.user.drawio`で呼び出している。定義したFunctionは以下[^1]。
![[Pasted image 20210605231334.png]]
## 動作
カーソルが[[内部リンク]]に当たっている状態でコマンドを実行する。
- ファイルが存在する場合は[[draw.io]]で開く
- ファイルが存在しない場合はファイルが作成され、[[draw.io]]で開く
- ファイルの作成場所は`Default location for new attachments`を考慮する
[^1]: [[Windows]]の[[cmd]]を使った場合。他環境では環境変数の指定方法が変わる([[Bash]]なら`$file`)