MarsEditのブックマークレットを少しカスタマイズしたら便利になった!

広告

MarsEdit 4

普段ブログを書くのにMarsEditを利用しています。
以前は、ReederからMarsEditの連携ができたので快適でしたが、Mojaveになった際に連携できなくなってしまいました。


その後は、ReederからChromeを開き、MarsEditのブックマークレットを起動するようにしていました。


以前の環境が快適だったため、ReederからMarsEditを呼び出すアプリを作ろうと思いました。
しかし、どうがんばっても選択範囲を取得することができませんでした。
プログラム的に言うと、「Share Extension」のアプリからWebPageが取得できればjavascriptでタイトルや選択範囲を取得し、MarsEditを起動ができると考えました。
現実は、Reederから取得できるのがWebPageではなくURLのみでした。
それだと選択範囲は消えてしまうので、残念ながら求める機能にはならないので諦めました。
Safariなら実装できたので残念でした。



ここでやめてしまうのは勿体ないので、少しでも便利にするために、MarsEditのブックマークレットをいじることにしました。
公式のブックマークレットだと、タイトル(#title#)、選択範囲(#body#)、ページのURL(#url#)は取得できますが、「#sourceHomeURL#」と「#sourceName#」は取得していませんので空欄になってしまいます。

そこで「#sourceHomeURL#」はURLの最初からドメインまでを取得し、「#sourceName#」は「og:site_name」が設定されていれば、「og:site_name」の値、設定されていなければドメイン名をセットするようにしました。

例えば当サイトの場合では、「#sourceHomeURL#」は「https://another.rocomotion.net」、「#sourceName#」は「og:site_name」を設定しているので「Another Rocomotion」となります。
仮に「og:site_name」が設定されていない場合は、「another.rocomotion.net」がセットされます。


これで少し便利になりました。


ソースとしてはこんな感じです。


 
javascript:(function(){
	var baseUrl = 'marsedit:';
	var url = baseUrl;
	var title = document.title;
	url = url + 'title=' + encodeURIComponent (title);
	var currentUrl = document.location.href;
	url = url + '&url=' + encodeURIComponent (currentUrl);
	var selectedText;
	selectedText = getSelection();
	if (selectedText != '') url = url + '&text=' + encodeURIComponent (selectedText);
	url = url + '&sourceHomeURL=' + document.location.protocol+'//'+document.domain;
	var sourceName = document.domain;
	var items = document.getElementsByTagName('meta'); 
	for(i=0;i<items.length;i++){
		if(items[i].getAttribute('property')=='og:site_name'){
			sourceName = items[i].getAttribute('content');
		}
	}
	url = url + '&sourceName=' + sourceName;
	document.location.href=url;
})();
 


このブックマークレットをご利用の方は、こちらをコピーするなりブックマークへ直接入れることで利用できるようになります。
(ChromeとFireFoxでは動きましたが、Safariでは動きませんでしたのでご注意ください。)



--
ReederからMarsEdit連携が戻ってくると良いのですが・・・
そしてぜひ戻るときは、QuickPostに準じて頂けると幸いです。


MarsEdit 4

Reeder 4