Safari, Chromeで右クリックのメニューからリンク先URLを取得するAutomatorワークフロー


Chrome Canaryでwebページを見ている時に、リンク先をCanaryではなく通常版のChromeで開きたい案件が発生した
右クリックのサービスの中に「URLを開く」というものがあり、それでいけるかと思っていたのだが選択した文字列をそのまま規定のブラウザに送るというクソ仕様だった
(http://fuga.com/みたいになってると http://fuga.com/ に飛ばされる!)

そこで自作のサービスでなんとかしようと思い色々やって下記のコードに落ち着いた
JavaScriptでワークフロー書けるとか全然知らなかった(そもそもAutomatorすら触ったことなかったけど)
そしてそっからさらにブラウザで任意のJavaScriptを実行できるなんて・・・

苦労の結晶.js
function run(input, parameters) {

    var app = Application("Google Chrome Canary");
    app.includeStandardAdditions = true;

    var url = app.windows[0].activeTab.execute({
        javascript: 'window.getSelection().anchorNode.parentNode.href'
    });

    return url;
}

最終的にこんな感じ

あんまり需要ありそうには思えないけど備忘録も兼ねて

[2015/10/30 13:00 追記]

Safariでやろうと思ったらちょっとコード違った

Safari
function run(input, parameters) {

    var app = Application("Safari");
    app.includeStandardAdditions = true;

    var url = app.doJavaScript('window.getSelection().anchorNode.parentNode.href',{
        in: app.windows[0].currentTab
    });

    return url;
}