Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

Dynamic Menu Clicker

Posted on 12月 31, 2018 by Takaaki Naganoya

動的にアプリケーションのメニューをたどって目的のメニュー項目のオブジェクトを取得し、強制的にクリックを行うAppleScriptです。

GUI Scriptingのメニュークリックの効率化を行います。アプリケーション名とクリックさせるメニュー項目のメニューバーからの階層のメニュータイトルを順次記述したリストを渡すと、クリックを行います。

GUI Scriptingは強力なソリューションではありますが、たとえばメニューの強制操作を行うのであれば、メニュー項目がイネーブルになっているか事前に確認する必要がありますし、OSやアプリケーションのバージョンアップ時にメニュー項目の並び順が変わったりすると効かなかったりします。

そのため、目的のメニュー項目の並び順が変わったぐらいでは影響がないように備えるぐらいはしておきたいところです。

これまでにも、タイトルを指定すると指定アプリケーションのすべてのGUI要素から検索して実行するようなScriptを作成して試してみてはいたのですが、これだと全GUI要素をいったん取得して絞り込み検索を行うので、処理速度がいまひとつです(正直なところ、遅い)。

なので、それほど高機能ではないものの、スピードが速いものを作ってみました。メニューをたどって目的のメニュー項目を探し出します。メニュー項目を順番にリストに記述すればよいだけなので、普通にtell文でオブジェクト階層を指定するよりも手軽です。

AppleScript名:Dynamic Menu Clicker
—
–  Created by: Takaaki Naganoya
–  Created on: 2018/12/31
—
–  Copyright © 2018 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"

–Force Menu item Clicker by parameters
set appName to "Keynote" –Application Name
set aList to {"配置", "オブジェクトを整列", "左揃え"} –Localized Menu Titles

set aRes to clickSpecifiedMenuElement(appName, aList) of me

on clickSpecifiedMenuElement(appName as string, menuList as list)
  set menuObj to generateMenuItemReference(appName, menuList) of me
  
if menuObj = false then return false
  
  
tell application appName to activate
  
  
tell application "System Events"
    click menuObj
  end tell
end clickSpecifiedMenuElement

on generateMenuItemReference(appName, aList)
  tell application "System Events"
    tell application process appName
      set fItem to contents of first item of aList
      
set aList to rest of aList
      
set anObj to menu fItem of menu bar item fItem of menu bar 1
      
      
set aLen to length of aList
      
      
repeat with i from 1 to aLen – 1
        set j to contents of item i of aList
        
set tmpObj to menu j of menu item j of anObj
        
copy tmpObj to anObj
      end repeat
      
      
set tmpObj2 to menu item (contents of last item of aList) of anObj
      
set exRes to exists of tmpObj2
      
if exRes = true then
        return tmpObj2
      else
        return false
      end if
    end tell
  end tell
end generateMenuItemReference

★Click Here to Open This Script 

More from my site

  • Dynamic Menu Clicker v2Dynamic Menu Clicker v2
  • Tanzakuの実証実験用バージョン「Tanshio」の配布を開始Tanzakuの実証実験用バージョン「Tanshio」の配布を開始
  • コンテンツ中の表示中のエリア座標を取得するコンテンツ中の表示中のエリア座標を取得する
  • TeamViewerの「リモートコントロール」画面からIDとパスワードを取得(v14対応)TeamViewerの「リモートコントロール」画面からIDとパスワードを取得(v14対応)
  • macOS 10.14のバグ? アクセシビリティ認証macOS 10.14のバグ? アクセシビリティ認証
  • mouseClickを用いて指定座標をクリックmouseClickを用いて指定座標をクリック
Posted in GUI Scripting | Tagged 10.11savvy 10.12savvy System Events | 1 Comment

1 thoughts on “<span>Dynamic Menu Clicker</span>”

  1. 11/23/19
    8:29 PM
    2019年11月23日
    8:29 PM

    Reply

    Dynamic Menu Clicker v2 – AppleScriptの穴 says:

    […] を行うAppleScript「Dynamic Menu Clicker」の改良版(v2)です。 […]

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular Posts

  • 画面上の指定座標にマウスカーソルを強制移動させてクリック
  • Numbersで選択範囲のセルのデータを取得して重複データを抽出
  • フルパスからファイル名を取得する
  • 【基礎】AppleScriptの実行を(操作により)中断する
  • macOS 11.0, Big Sur AppleScript関連の変更点
  • フォルダの存在確認
  • 指定した文字で囲まれたキーワードの色を置換する
  • AppleScriptでキースキャン
  • 文字列の長さを求める
  • mouseClickを用いて指定座標をクリック
  • CSVデータを読み込んで表インタフェースで表示確認 v2
  • DSCaptureで画面キャプチャ
  • アラートダイアログの背景色を指定してTable Viewを表示
  • AVFAudioでオーディオ再生のじっけん
  • 文字種類変換(ASOC)
  • ディスプレイを回転させる
  • Dynamic Menu Clicker
  • 指定フォルダ以下のすべてのファイルとフォルダ名から絵文字を除去する v2
  • SMCkitで各種センサー値を取得する
  • macOS 10.14で新設されたエラーコード-1743を確認する

Tags

10.11savvy (1109) 10.12savvy (1249) 10.13savvy (1387) 10.14savvy (512) 10.15savvy (303) 11.0savvy (112) CotEditor (48) Finder (43) iTunes (25) Keynote (61) NSAlert (59) NSAlertSecondButtonReturn (16) NSArray (50) NSBitmapImageRep (20) NSBundle (19) NSButton (33) NSColor (48) NSDictionary (26) NSFileManager (23) NSFont (18) NSImage (40) NSJSONSerialization (21) NSMutableArray (61) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (55) NSScreen (30) NSScrollView (22) NSString (114) NSURL (93) NSURLRequest (22) NSUTF8StringEncoding (30) NSUUID (18) NSView (33) NSWindow (17) NSWorkspace (19) Numbers (42) Pages (16) Safari (34) System Events (16) WKUserContentController (20) WKUserScript (19) WKUserScriptInjectionTimeAtDocumentEnd (17) WKWebView (21) WKWebViewConfiguration (21)

カテゴリー

  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Bluetooth
  • boolean
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • History
  • How To
  • Icon
  • Image
  • Input Method
  • Internet
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Language
  • list
  • Locale
  • Machine Learning
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • shell script
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • 登録
  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC