【Obsidian】QuickAddのコマンドIDを調べる方法

ObsidianのプラグインQuickAddChoiceは、設定画面の雷マークを押せばコマンドとして登録できます。

雷マーク

コマンドとして登録すれば、ホットキーやスクリプトから呼び出すことができます。しかし、スクリプトから呼び出すのであればコマンドIDを調べる必要があります。

今回は「Choiceでコマンドとして登録した際のIDの調べ方」とIDの使用例を紹介します。

ChoiceのコマンドIDの調べ方

Obsidianで登録されているすべてのコマンドのIDを調べるならapp.commands.commandsを使えばよいのですが、さすがに探すのが面倒です。そこで、リストにしてフィルターをかけます(参考:Issue #664)。

コンソールに表示

console.table(app.commands.listCommands().filter(c => c.id.includes('choice')))

開発者ツール(Ctrl+Shift+iなど)で開き、上記のスクリプトを貼り付けて実行します。

choiceのID一覧

このテーブルの幅はExcelやスプレッドシートのように動かせるので適宜調整しましょう。

ノートに表示

ノートに表示したいのであればDataviewを使っても表示できます。

// dataviewjsの例
dv.table(
["name", "id"],
app.commands
.listCommands()
.filter((c) => c.id.includes("choice"))
.map((c) => [c.name, c.id]),
);
dataviewjsでChoiceのIDを調べる

テーブルが見切れる場合はノートの幅が狭いので広くしましょう。

ChoiceのコマンドIDの使用例

ChoiceのコマンドIDを使っている例を紹介します。
筆者はブログネタをQuickAddのCaptureでデイリーノートに書き込み、Tasksで「完了」「未完了」に分けて表示しています。この書き込みボタンでコマンドIDを活用しています。

QuickAddの実例

Captureの内容

Capture formatは次のようになっています。

Capture Formatの例

「タイムスタンプ」「タグ」を含むチェックリストです。

ノートに書くこと

「書き込む」ボタンはMeta Bindというプラグインを使いました。Meta Bindでは、コマンドIDを指定して実行するボタンが用意できます。ボタンを用意しておけば、覚えるホットキーが少なくて済みます。

Meta Bindのコードブロックには次のように書きました。

style: default
label: 書き込む
actions:
- type: command
command: quickadd:choice:e0411179-b315-4bef-a504-d3fe7bfc6210

このquickadd:choice:xxx……が、先ほど調べたChoiceのコマンドIDですね。

Meta Bindについては別の記事【Obsidian】ボタンを作れるプラグインMeta Bindの使い方に書いたので興味のある方はどうぞ。

完了したネタは折りたたんで表示しています。

> [!note]- 今日完了にしたネタ
> ```tasks
> filter by function task.file.folder === "daily/"
> ignore global query
> tag includes 💡
> tag includes blog
> done on today
> short mode
> hide tags
> ```

未完了のネタはそのまま表示します。

filter by function task.file.folder === "daily/"
ignore global query
tag includes 💡
tag includes blog
not done
short mode
hide tags

全体

使用例の全体も載せておきます。各自に合わせて変えてください。

```meta-bind-button
style: default
label: 書き込む
actions:
- type: command
command: quickadd:choice:e0411179-b315-4bef-a504-d3fe7bfc6210
```
# ブログネタ一覧
> [!note]- 今日完了にしたネタ
> ```tasks
> filter by function task.file.folder === "daily/"
> ignore global query
> tag includes 💡
> tag includes blog
> done on today
> short mode
> hide tags
> ```
```tasks
filter by function task.file.folder === "daily/"
ignore global query
tag includes 💡
tag includes blog
not done
short mode
hide tags
```

以上、QuickAddのChoice関連でした。