ObsidianからX(Twitter)に投稿する方法は、これまで以下のとおり、記事にしてきました。全文と選択したテキストを投稿する方法です。
Appleのショートカットを使ったりTemplaterを使ったりで、もっとシンプルにしたいと思っていました。
そこで、この記事。
これはスゴイです。次の3パターンが1つのスクリプトで実現できるのです。
- 範囲選択しているときは、その部分をXへ転送
- 選択してなければカーソル行をXへ転送
- カーソル行が空行なら本文の全文をXへ転送
しかも要望してつけていただいたのですが、ダブルブラケットがある場合、転送した内容からは外してくれるんです。
ObsidianでリンクつきのメモをXに投稿するとき、これが便利なんですよね。
もう完璧。
これだけでも十分なのですが、以下の2点を加えたくてアレンジしました。
- 本文の全文だけでなくタイトルも転送
- 転送した内容からタグを削除
JavaScriptはほとんど理解できていないのですが、これまで使ってきたObsidianのスクリプトを参考にしたらなんとかできました。
「tp.file.title + "\n" +
」と「s = s.replace(/#[^\s#]+/mg, "")
」
を加えただけなのですが、できたときは嬉しいですね。素人だけに。
以下が、アレンジした後のコードです。
<%*
url = "twitter://post?message="
s = tp.file.selection()
if(s){
tp.file.cursor_append(s)
}else{
e = app.workspace.activeLeaf.view.editor
p = e.getCursor().line
s = e.getLine(p)
if(!s) s = tp.file.title + "\n" + tp.file.content
}
s = s.replace(/!?\[\[(.+?)\]\]/mg, "$1")
s = s.replace(/#[^\s#]+/mg, "")
open(`${url}${encodeURIComponent(s)}`)
%>
タイトル(ファイル名)は「TwitterPerfect」にしましたよ。今までの懸案がこれで一気に解決できたので私としては完璧なんです!
ちなみに登録方法は、コードをノートに書いてタイトルをつけます。そして、コミュニティプラグイン「Templater」の「Template Hotkeys」に登録します。あとは、使いたいノートを開いてコマンドパレッドなどで呼び出すだけですね。