任意の検索エンジンで検索ー改良版

提供: MeryWiki
ナビゲーションに移動 検索に移動
  • Noah様作成のマクロ「任意の検索エンジンで検索」を、Sukemaru様、Kuro様、Noah様から、フォーラムにおいて多くの助言、指導、tips などをいただき、Takeshi が改良しました。
  • このマクロを起動し、ポップアップメニューから検索エンジンを選択して検索します。
  • ポップアップメニュー右に表示されるアクセスキーを押すと、そのメニューが選択されます。
  • ポップアップメニューは Space キーを押すか、メニュー外をクリックするとキャンセルできます。
  • 文字列が何も選択されていないとステータスバーにメッセージが表示され、マクロを終わります。
  • 注意!!一部の検索エンジンにおける、URLにおける予約文字「/」「:」「&」「+」「=」などへの対処がまだです!
  • 上記が原因で検索が上手く行かなかった場合、選択文字列はクリップボードに保存されていますので、手作業で検索ボックスにペーストしてください。
#title="任意の検索エンジンで検索 Ver 2.5"
#tooltip="ポップアップメニューで各種検索エンジンを指定し、選択文字列をブラウザで開く"

// -------------------------------------------------
// Ver 2.5	2019-07-12
// 選択文字列、複数語、複数文を任意の検索エンジンで検索するためのマクロ。

// Noah様作成のマクロ「任意の検索エンジンで検索」を、Sukemaru様、Kuro様、Noah様から、フォーラムにおいて多くの助言、指導、tips などをいただき、Takeshi が改良しました。
 
// このマクロを起動し、ポップアップメニューから検索エンジンを選択して検索します。
// ポップアップメニュー右に表示されるアクセスキーを押すと、そのメニューが選択されます。
// ポップアップメニューは Space キーを押すか、メニュー外をクリックするとキャンセルできます。

// 文字列が何も選択されていないとステータスバーにメッセージが表示され、マクロを終わります。
 
// 注意!!一部の検索エンジンにおける、URLにおける予約文字「/」「:」「&」「+」「=」などへの対処がまだです!
// 上記が原因で検索が上手く行かなかった場合、選択文字列はクリップボードに保存されていますので、手作業で検索ボックスにペーストしてください。
// -------------------------------------------------

var f = [];
// ここから下に、お好みの検索エンジンとアクセスキーを定義してください。---------------
// f[0] はスキップさせるので、この下のサンプル行はコメントアウト不要です。
f[ f.length ] = [ "検索エンジン名", "https://example.com/search?q=%1", 1 ];

// 1:検索エンジン名、(&G) などの記述で、「G」をアクセスキーとして設定できます。
// 2:検索URL(選択文字列が入る場所を「%1」で記述する)
// 3:選択文字列の処理方法(未指定:URLエンコード, 1:半角・全角スペースとタブを「+」に置換。省略可)

// Google フレーズ検索、Wikipedia、Weblio 英和和英辞典 など、複数の単語を "+" で連結して検索する必要があるサイト向けには、選択文字列の処理方法に 1 を指定してください。

// ポップアップメニューに表示する必要のない行はコメントアウトしてください。
// 表示する検索エンジン、アクセスキーの並べ替え/追加/削除はご自由にどうぞ。
// f[ f.length ] = []; でメニューの中に、セパレータを挿入できます。

f[ f.length ] = [ "Google(&G)", "https://www.google.co.jp/search?q=%1&ie=utf-8&oe=utf-8" ];
f[ f.length ] = [ "Google フレーズ検索(&P)", "https://www.google.co.jp/search?q=%22%1%22&ie=utf-8&oe=utf-8", 1 ];
f[ f.length ] = [ "Google日英翻訳(&J)", "https://translate.google.com/translate_t?hl=ja&langpair=ja%7Cen&text=%1" ];
f[ f.length ] = [ "Google英日翻訳(&E)", "https://translate.google.com/translate_t?hl=ja&langpair=en%7Cja&text=%1" ];
f[ f.length ] = [ "Google 書籍検索(&B)", "https://www.google.com/search?tbm=bks&q=%1" ];
f[ f.length ] = [ "Google 日本語・英語論文検索(&S)", "https://scholar.google.co.jp/scholar?hl=ja&as_sdt=0%2C5&q=%1", 1 ];
f[ f.length ] = [ "Google Map(&M)", "https://www.google.co.jp/maps/place/%1", 1 ];
f[ f.length ] = [];	// 空配列 [] でセパレータ( "" でも可)
f[ f.length ] = [ "Wikipedia 日本語版(&U)", "https://ja.wikipedia.org/wiki/%1", 1 ];
f[ f.length ] = [ "Wikipedia 英語版(&C)", "https://en.wikipedia.org/wiki/%1", 1 ];
f[ f.length ] = [];	// セパレータ
f[ f.length ] = [ "Amazon 和書検索(&A)", "https://www.amazon.co.jp/s?k=%1&i=stripbooks&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&ref=nb_sb_noss_1", 1 ];
f[ f.length ] = [ "Amazon 洋書検索", "https://www.amazon.co.jp/s?k=%1&i=english-books&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&ref=nb_sb_noss", 1 ];
f[ f.length ] = [ "Amazon.co.jp 全ジャンル", "https://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Daps&field-keywords=%1" ];
f[ f.length ] = [ "Amazon.com 全ジャンル", "https://www.amazon.com/s?k=%1" ];
f[ f.length ] = [];	// セパレータ
f[ f.length ] = [ "英辞郎", "https://eow.alc.co.jp/search?q=%1", 1];
f[ f.length ] = [ "Weblio 英和和英辞典(&W)", "http://ejje.weblio.jp/content/%1", 1 ];
f[ f.length ] = [ "Weblio 国語辞書", "https://www.weblio.jp/content/%1" ];
f[ f.length ] = [ "Weblio 日本語類語辞典(&R)", "https://thesaurus.weblio.jp/content/%1" ];
f[ f.length ] = [ "Weblio 英語類語辞典(&T)", "https://ejje.weblio.jp/english-thesaurus/content/%1" ];
f[ f.length ] = [];	// セパレータ
f[ f.length ] = [ "Linguee 日英英日翻訳(&L)", "https://www.linguee.jp/%E6%97%A5%E6%9C%AC%E8%AA%9E-%E8%8B%B1%E8%AA%9E/search?source=%E8%8B%B1%E8%AA%9E&query=%1", 1 ];
f[ f.length ] = [ "OneLook 英語辞書串刺検索(&O)", "https://www.onelook.com/?w=%1&ls=a" ];
f[ f.length ] = [ "Merriam-Webster 英語辞書", "https://www.merriam-webster.com/dictionary/%1" ];
f[ f.length ] = [ "Merriam-Webster 英語類語辞書", "https://www.merriam-webster.com/thesaurus/%1" ];
f[ f.length ] = [ "FreeDic 英語イディオム辞典(&I)", "https://idioms.thefreedictionary.com/%1", 1 ];
f[ f.length ] = [ "FreeDic 英語類語辞典(&Z)", "https://www.freethesaurus.com/%1" ];
f[ f.length ] = [];	// セパレータ
f[ f.length ] = [ "Startpage", "https://www.startpage.com/do/search?q=%1" ];
f[ f.length ] = [ "DuckDuckGo(&D)", "https://duckduckgo.com/?q=%1&ia=web" ];
f[ f.length ] = [];	// セパレータ
f[ f.length ] = [ "Yahoo! JAPAN(&Y)", "https://search.yahoo.co.jp/search?p=%1&ei=UTF-8", 1 ];
f[ f.length ] = [ "Bing", "https://www.bing.com/search?q=%1" ];
f[ f.length ] = [ "Twitter", "https://twitter.com/search?q=%1%20lang%3Aja" ];
f[ f.length ] = [ " キャンセル & ", 0 ]; // & のうしろの半角空白がアクセラレータ(Spaceキーでキャンセルできます)
// ここまでが、検索エンジンとアクセスキーの定義-----------------

// 選択範囲の文字列を取得
var targetText = document.selection.Text;

// 文字列が選択されていなければ、ステータスバーにメッセージを表示して終了
if ( ! targetText ) {
    Status = "選択文字列がありません!!";
    Quit();
}
  
// 検索が上手く行かなかった場合の保険的処理として、手入力で検索ボックスにペーストするため、選択文字列をクリップボードへ保存しておく
document.selection.Copy();

// ポップアップメニューを作成。ラベルの文字列がなければ menu.Add() のオプションフラグ meMenuSeparator を拾う
var menu = CreatePopupMenu();

// var i = 1 にしてダミー要素の f[0] をスキップすると「i」とメニューのIDが一致する
for ( var i = 1, len = f.length, id; i < len; i ++ ) {

  if ( f[ i ].length ) {
    id = f[i][1] ? i : 0; // ← メニューの ID 用変数
    menu.Add( f[ i ][0], id );
  } else {
    menu.Add( "", 0, meMenuSeparator );// f[i] == [] ならメニュー内にセパレータを表示
  }
}

// ポップアップメニューを表示し、選択されたメニューの id を取得する
var id = menu.Track( mePosMouse );

// 検索サイトに応じた選択文字列の処理、ポップアップメニューから戻る id により判断・分岐
if ( id ) {

  switch( f[ id ][2] ) {
    case 1:
      // 選択文字列の処理方法に 1 を指定したサイトでは、半角・全角スペースとタブ文字を半角「+」記号に置換する
      targetText = targetText.replace( /[  \t]/g, "+" );
      break;
    default:
      // その他の検索サイトでは、選択文字列を URLエンコード処理して、URLの予約文字「/」「:」「&」「+」「=」などに対処する
      targetText = encodeURIComponent( targetText );
      break;
  }

  // ポップアップメニューの選択結果に対応した検索サイトURL中の「%1」を選択文字列に置換し、検索用URLを生成する
  var url = f[ id ][1].replace( /%1/g, targetText );

  // 検索用URLをブラウザに渡してオープンする
  new ActiveXObject("WScript.Shell").Run( url );

  // 終了メッセージをステータスバーに表示する
  Status = "\"" +  menu.GetText( id ).replace( /\(&.\)|&/g, "" ) + "\" で検索";
}
スポンサーリンク