Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2009-09-17

[][]Safariで開いているページのタイトル・URL・選択部分をクリップボードにコピーする

Safariで調べものをして、たくさんの参考ページを開いているとします。このタイトルとURL一覧をメールで送ったり、エディタに書き出したりするのに、ひとつひとつ手でコピペすることはありません。こんなスクリプト実行するだけで、クリップボードにコピーできています。

tell application "Safari"
	set my_result to ""
	repeat with i from 1 to (count every document)
		repeat with ii from 1 to (count every tab of window i)
			set my_selection to do JavaScript "unescape(getSelection()).replace(/\\s+$/, '');" in tab ii of window i
			if (my_selection is not "") and (my_selection does not end with return) then
				set my_selection to "“" & my_selection & "”" & return
			end if
			set my_result to my_result & "『" & name of tab ii of window i & "』" & return & URL of tab ii of window i & return & my_selection & return
		end repeat
	end repeat
	set the clipboard to my_result
end tell

copy_URL_list.app.zip 直

(追記:2009-09-17T01:01:16+0900)ウインドウ内に選択テキストがあれば、それもクリップボードに取り込むようにしました。

(追記:2011-10-08T12:18:21+0900)選択部分を引用符で囲むようにしました。


ぺろんとMailにペーストしたところ:

f:id:seuzo:20090916232003g:image

使ってみればわかりますが、とても便利です。アプケーションとしてDocに入れておいてもいいし、スクリプトメニューに入れておいてもいいかもしれません。


カレントタブだけを対象にしたい場合

すべてのウィンドウのすべてのタブじゃなくて、いま開いている最前面のタブだけを対象にしたいときは、こちらを使うといいかもしれません。

tell application "Safari"
	set my_result to ""
	if exists window 1 then
		tell window 1
			tell current tab
				set my_selection to do JavaScript "unescape(getSelection()).replace(/\\s+$/, '');"
				if (my_selection is not "") and (my_selection does not end with return) then
					set my_selection to "“" & my_selection & "”" & return
				end if
				set my_result to my_result & "『" & name & "』" & return & URL & return & my_selection & return
			end tell
		end tell
		set the clipboard to my_result
	end if
end tell

copy_URL_currentTab.app.zip 直

まあ、これだけだったらプラグインがあるような気がしますけれど...^^

nao_shnao_sh 2011/02/22 22:59 便利ですね、助かりました!ありがとうございます。

トラックバック - http://d.hatena.ne.jp/seuzo/20090917/1253114030