Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian dataviewjsにコピーボタンをつける

dataviewは面白いけど、表ができたらそれだけで、そこからの発展がない。 そう思ってました。 でもdataviewの沼は底無しに深かったのです。

インラインJS

インラインJSについて調べたとき、Markdown変換のコマンドがあったわけです。 なんのため? これは「使え」ってことだなあ。 どう使えばいいんだろう?

dv.el()

エレメント作成のコマンド。 これもdataviewに用意されている。 HTMLタグをつけるときに使えます。 じゃあ、buttonタグはどうだろう?

もしボタンでクリップボードに表が保存できたら。 それ、いいじゃないか。

コピーボタン

テーブルの下に「copy」というボタンが出てきます。 これをタップするとクリップボードMarkdownが保存される。 貼り付けると、それが表になる仕組みです。

```dataviewjs
s = [
  ["阪神", 20, 13],
  ["DeNA", 19, 14],
  ["広島", 18, 16]
]

dv.table(["チーム", "勝ち", "負け"], dv.array(s))

const e = dv.el("button", "copy")
e.onclick = function(){
  new Notice("copy")
  t = dv.markdownTable(["チーム", "勝ち", "負け"], dv.array(s))
  navigator.clipboard.writeText(t)
}
```

実行例

こんな感じに表示されます。

そしてコピーをペーストすると下記のようになります。

チーム 勝ち 負け
阪神 20 13
DeNA 19 14
広島 18 16

うまく行きそうですね。

実は

このページを見て「便利そう」と思ったものの、スクリプトが煩雑で「もっと簡単に書けるのに」と思い、組み直してみました。

ボタンを作る試みは面白いと思います。 表の活用する幅が広がる。

まとめ

だんだんインターラクティブになってきた。