052.【Id】選択したテキストを右クリックメニューでGoogle検索する
書いたコード
//@targetengine 'searchByChrome' var mn = app.menus.item("$ID/Main").submenus.item("Scripts"); mn.isValid && mn.remove(); var addCustomMenu = (function() { var customMenuAction = app.scriptMenuActions.add("Google検索"); var customMenu = app.menus.item("$ID/Main").submenus.item("Scripts"); var customMenuItem; if (!customMenu.isValid) { customMenu = app.menus.item("$ID/Main").submenus.add("Script"); customMenuItem = customMenu.menuItems.item("Google検索"); } // Google検索関数 var fnc = function() { var sel = app.selection[0] if (app.selection.length !== 1) { alert("テキストを選択してください"); exit(); } if (app.selection[0].constructor.name !== "Text") { alert("テキストを選択してください"); exit(); } var sel = app.selection[0].contents; var url = "https://www.google.com/search?q=" + sel + "&rlz=1C1TWJA_jaJP732JP732&oq=" + sel + "&aqs=chrome..69i57j0l5.1527j0j8&sourceid=chrome&ie=UTF-8"; var scpt = 'CreateObject("WScript.Shell").Run("chrome.exe -url ' + url + '")'; app.doScript(scpt, ScriptLanguage.VISUAL_BASIC); } var ev = customMenuAction.eventListeners.add("onInvoke", fnc); if (!customMenuItem.isValid) { customMenu.menuItems.add(customMenuAction); } // コンテキストメニューに追加 var contextMenu = app.menus.item("文字のコンテキストメニュー").menuItems.item("Google検索"); contextMenu.isValid && contextMenu.remove(); contextMenu = app.menus.item("文字のコンテキストメニュー").menuItems.add(customMenuItem.associatedMenuAction); }());
メモ
わかったこと
- ●●があったら/無かったら××
var pg = doc.pages.itemByName("100"); if (pg.isValid) { pg.remove(); }
は
pg.isValid && pg.remove();
と表せる。 同様に
if (!pg.isValid) { doc.pages.add(); }
は
pg.isValid || doc.pages.add();
と表せる。
- menu周りもろもろ
あくまで私の調べた限りなので誤りを含む可能性が多分にあります。- menu:menuElementの束。メニューバーやコンテキストメニューなど。
- menuElement:menuの中の一つ一つ(submenuやmenuSeparatorsも含む)。
- menuItem:menuの中の一つ一つ(submenuやmenuSeparatorsを含まない)。
- submenu:menuの中で子要素を持つ項目。
- menuAction:menuItemに割り当てられる機能。挙動そのもの。
- ScriptMenuAction:menuActionと同等だが指定のスクリプトを実行するもの。
- menu:menuElementの束。メニューバーやコンテキストメニューなど。
積み残し
- JavaScriptで完結したい。
- ESTKで実装したい。
- Google検索の言語設定を選択できるようにする?