Jazzと読書の日々

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

TemplaterはObsidian Mobileのアクションである

覚え書き。

Templater

侮ってました。 これは「アクション」です。 ちょっとした機能をスクリプトで追加する。 それをツールバーやホットキーで呼び出す。 そういう「アクション」です。

Obsidian plugin: Templater

スクリプトの書き方

mdファイルを下記形式で書きます。

<%*
  Javascript本体
%>

TemplaterのTemplate Hotkeysに登録すると、モバイルツールバーのグローバルコマンドで追加できます。 アイコンが?になるので、CommanderのMobile Toolbarで設定。

Obsidian plugin: Commander

専用コマンド

本文を取得する。

s = tp.file.content;

選択範囲を取得する。

s = tp.file.selection();

または

s = document.getSelection().toString();

カーソル行を取得する。

e = app.workspace.activeLeaf.view.editor;
p = e.getCursor();
s = e.getLine(p.line);

カーソルを動かす。

document.getSelection().modify("move", "right", "character");

カーソル位置に結果を返す。

return s;

または

tp.file.cursor_append(s);

文末に追加する。

tR += s;

本文を書き換える。

e = app.workspace.activeLeaf.view.editor;
e.setValue(s);

カーソル行を書き換える。

e = app.workspace.activeLeaf.view.editor;
p = e.getCursor();
e.setLine(p.line, s);

クリップボードを読み込む。

s = await navigator.clipboard.readText();

クリップボードに保存する。

navigator.clipboard.writeText(s);

SafariやURLスキームを呼び出す。

open(s);

HTTPリクエストを送る。

r = await tp.obsidian.request({url});
d = JSON.parse(r);

HatenaBlog.md

たとえば、はてなブログのアプリに投稿するには下記のようになります。

<%*
p = tp.file.content.split("\n");
a = p.shift();
b = p.join("\n"); 
url = "hatenablog:///new?title=" + encodeURIComponent(a) + "&body=" + encodeURIComponent(b);
open(url);
%>

URLスキームが使えるアプリにテキストを渡す方法。

CutLine.md

カーソル行をクリップボードに保存して削除します。

<%*
d = document.getSelection();
d.modify("move", "left", "paragraphboundary");
d.modify("extend", "right", "paragraphboundary");
navigator.clipboard.writeText(d.toString());
d.deleteFromDocument();
%>

カーソル行の操作はこれの応用で。

まとめ

すでに発表されているスクリプトが参考になります。