書いている途中にスクリプトを埋め込む。 文章とプログラミングの融合。 そんな変な使い方がObsidianならできます。 特殊すぎて頭の切り替えが追いつかない。
基本形
前回、数式を埋め込めることが判明しました。 OK?
何か難しいですよね。 でも計算式を残すと、なぜその計算をしたか理由もわかる。 反面、他のアプリで開いても計算するわけではない。 一長一短です。
応用編
数式が一本ならいいけど、複数の場合はどうすればいいのでしょうか。
どうやらコンマ区切りで書くことができます。
`$= a=11, b=22, a+b`
変数を使って公式に代入したい場合ですね。 これなら数値を変えながら計算結果を参照できる。
DataviewJS
もっと複雑な場合はどうしたらいいでしょうか。
それはdataviewjsにしちゃえばいいわけです。
```dataviewjs
a=11
b=22
dv.span(a+b)
```
改行が区切りになるし、やはり見やすい。 結果の表示にはdv.span()を使います。 テキストも数字もこれで表示できます。
表を書く
普通の表を書くこともできます。
```dataviewjs
s = [
["阪神", 20, 13],
["DeNA", 19, 14],
["広島", 18, 16]
]
dv.table(["チーム", "勝ち", "負け"], dv.array(s))
```
Markdownの表だと下記のように書きます。
```dataviewjs
s = [
["阪神", 20, 13],
["DeNA", 19, 14],
["広島", 18, 16]
]
t = dv.markdownTable(["チーム", "勝ち", "負け"], dv.array(s))
dv.paragraph(t)
```
さらに下記コマンドを追記すると、クリップボードにMarkdownが保存されます。
navigator.clipboard.writeText(t)
Templaterスクリプトと同じでCodeMirrorのコマンドが使えます。
禁忌
alert()やprompt()は使うとObsidianが落ちます。 ダイアログ系は無理らしい。 Notice()は表示するけど、文章を書くたびに出てくるから、Dataviewって背後で再実行されてるんですね。 表示に関しては、埋め込みに頼るのが良さそうです。
CSVを読み込む?
csvファイルを読み込んで表の作成ができるみたいだけど、上記のとおり行っても「Loading」で止まってしまいました。 モバイルでは無理なのかなあ。
まとめ
役に立ちそうで立たない豆知識でした。