Menu

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

AppleScriptの穴

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

ショートカットのプロパティで返ってくるアイコンをダイアログ表示

Posted on 10月 29, 2021 by Takaaki Naganoya

macOS 12であらたに搭載されたショートカット.appのショートカット・ワークフローのアイコンを読み取ってダイアログ表示するAppleScriptです。

Shortcuts.appおよびShortcuts Events.app経由で各ショートカット・ワークフローの情報を取得することができます。

tell application "Shortcuts Events"
  set aList to properties of shortcut 1
  
–> name:"ASTEST", class:shortcut, accepts input:false, action count:1, subtitle:"1個のアクション", folder:missing value, color:{62105, 22734, 24226}, computer name:«data TIFF4D4D002A00040008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 …..» id:"5CEF527E-F2E7-42A4-9513-209F098E50E9"}
  
end tell

★Click Here to Open This Script 

ここで、「computer name」と解釈されているのがショートカット・ワークフローのアイコンです。このあたりバグくさいところですね。実際には「icon」という属性ラベルなのですが、、、、

iconデータの内容は最初の文字を見れば丸わかりのTIFF画像です。

手っ取り早く変換したかったので、クリップボード経由でNSImageに変換して、ダイアログに表示してみました。

この手の「ちょっとしたビューをアラートダイアログに入れてデータ表示」を行うのは、すでにノウハウがたまっていて気楽に行えるのが2021年的なAppleScriptの利用状況です。

とりあえず、すべてのショートカット・ワークフローのアイコンを取得することはできるのですが、全部確認するのはかったるいので冒頭の10個だけ表示しています。

–> Watch Demo Movie

AppleScript名:ショートカットのプロパティで返ってくるアイコンをダイアログ表示.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/10/27
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.8"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property NSAlert : a reference to current application’s NSAlert
property NSImage : a reference to current application’s NSImage
property NSImageView : a reference to current application’s NSImageView
property NSRunningApplication : a reference to current application’s NSRunningApplication
property NSImageScaleProportionallyUpOrDown : a reference to current application’s NSImageScaleProportionallyUpOrDown

property returnCode : 0

tell application "Shortcuts Events"
  set aCount to count every shortcut
  
if aCount > 10 then
    set aCount to 10 –Too dull to see every icons…. If you want whole icons, remove this if-then block
  end if
end tell

repeat with i from 1 to aCount
  tell application "Shortcuts Events"
    set aProp to properties of shortcut i
    
set aCon to icon of aProp
    
set aName to name of aProp
  end tell
  
  
–クリップボードの内容をNSImageに
  
set the clipboard to aCon
  
set aNSIMage to my getClipboardASImage()
  
  
my dispNSImage(aNSIMage, aName)
end repeat

on dispNSImage(aNSIMage, aTitle)
  set aMessage to "Your NSImage"
  
set paramObj to {myMessage:aTitle, mySubMessage:"This is an image", myImage:aNSIMage}
  
my performSelectorOnMainThread:"displayImageView:" withObject:(paramObj) waitUntilDone:true
  
–my displayImageView:paramObj–for debugging with Script Editor
end dispNSImage

on displayImageView:paramObj
  set aMainMes to myMessage of paramObj
  
set aSubMes to mySubMessage of paramObj
  
set anImage to (myImage of paramObj)
  
  
set imgSize to (anImage’s |size|())
  
set imgWidth to ((imgSize’s width) as real)
  
set imgHeight to ((imgSize’s height) as real)
  
  
set anImageView to NSImageView’s alloc()’s initWithFrame:{origin:{x:0.0, y:0.0}, |size|:{width:imgWidth, height:imgHeight}}
  
anImageView’s setImageScaling:(NSImageScaleProportionallyUpOrDown)
  
anImageView’s setEditable:false
  
anImageView’s setImage:anImage
  
anImageView’s display()
  
  
— set up alert  
  
set theAlert to NSAlert’s alloc()’s init()
  
tell theAlert
    its setMessageText:aMainMes
    
its setIcon:anImage
    
its setInformativeText:aSubMes
    
its addButtonWithTitle:"OK"
    
its addButtonWithTitle:"Cancel"
    
its setAccessoryView:anImageView
  end tell
  
  
— show alert in modal loop
  
NSRunningApplication’s currentApplication()’s activateWithOptions:0
  
my performSelectorOnMainThread:"doModal:" withObject:(theAlert) waitUntilDone:true
  
if (my returnCode as number) = 1001 then error number -128
end displayImageView:

on doModal:aParam
  set (my returnCode) to aParam’s runModal()
end doModal:

— クリップボードの内容をNSImageとして取り出して返す
on getClipboardASImage()
  set theNSPasteboard to current application’s NSPasteboard’s generalPasteboard()
  
set theAttributedStringNSArray to theNSPasteboard’s readObjectsForClasses:({current application’s NSImage}) options:(missing value)
  
set theNSAttributedString to theAttributedStringNSArray’s objectAtIndex:0
  
return theNSAttributedString
end getClipboardASImage

★Click Here to Open This Script 

More from my site

  • macOS 12.6.1、組み込みAppleScript実行環境の「script objectで分離したハンドラが呼べない」問題が解消?macOS 12.6.1、組み込みAppleScript実行環境の「script objectで分離したハンドラが呼べない」問題が解消?
  • 集中モード(Don’t Disturb Mode)に設定する集中モード(Don’t Disturb Mode)に設定する
  • Shortcuts Eventsでショートカットのインストール+実行Shortcuts Eventsでショートカットのインストール+実行
  • AppleScriptからショートカット実行&ショートカット内でAppleScriptを実行AppleScriptからショートカット実行&ショートカット内でAppleScriptを実行
  • macOS 12が正式リリースされるmacOS 12が正式リリースされる
  • Shortcuts EventsShortcuts Events
(Visited 232 times, 1 visits today)
Posted in Shortcuts Workflow | Tagged 10.12savvy Shortcuts Shortcuts Events | Leave a comment

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

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 13.6.5 AS系のバグ、一切直らず
  • CotEditorで2つの書類の行単位での差分検出
  • Apple純正マウス、キーボードのバッテリー残量取得
  • macOS 15, Sequoia
  • 初心者がつまづきやすい「log」コマンド
  • 指定のWordファイルをPDFに書き出す
  • Adobe AcrobatをAppleScriptから操作してPDF圧縮
  • メキシカンハットの描画
  • 与えられた文字列の1D Listのすべての順列組み合わせパターン文字列を返す v3(ベンチマーク用)
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • 2023年に書いた価値あるAppleScript
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • Cocoa Scripting Course 続刊計画
  • Numbersで選択範囲のセルの前後の空白を削除
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • NaturalLanguage.frameworkでNLEmbeddingの処理が可能な言語をチェック
  • AppleScriptによる並列処理

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1392) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (207) 13.0savvy (177) 14.0savvy (127) 15.0savvy (104) CotEditor (64) Finder (51) iTunes (19) Keynote (115) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (74) Pages (54) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • 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)
  • 未分類

アーカイブ

  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 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

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

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