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

checkboxで項目選択するありふれたScriptにsdefをつけてみる

Posted on 8月 12, 2019 by Takaaki Naganoya

アラートダイアログにcheckboxを表示して、項目選択するAppleScriptにsdef(AppleScript用語辞書)をつけてみました。

内容は、先日書いた「アラートダイアログ上にcheckboxを表示 v2」そのものです。この手のScriptは、機能の割に行数が多くて、そんなに難しくない(単にCocoaの仕様にもとづいて書いているだけ)んですが、コード量が多いことで難しそうに見えてしまうとしたら残念です。sdefをつけて英語っぽい記法で簡潔に呼び出せると有用性がどのぐらい増すのか実験してみました。

–> Download checkboxLib.scptd(with sdef)

Step 1:普通に動作するAppleScriptをバンドル形式で保存

アラートダイアログ上にcheckboxを表示 v2が動作しているのを確認します。また、フラットな(バンドルではない)AppleScript(拡張子:.scpt)の場合には、バンドルScript(拡張子:.scptd)に変換します。

また、この際にバンドルIDをきっちり設定しましょう。

Step 2:sdefファイルを作成する

テキストエディタでsdefファイルを書いてみましょう。他のAppleScript対応アプリケーションのsdefファイルを参考にします。構文色分け機能のあるテキストエディタの場合(CotEditorなど)、XMLを指定しておくと色分けされるので間違いが少なくなることでしょう。

こんな感じに書いてみました。コマンド1つに、パラメータが4つ。sdefファイルを書いて、AppleScriptバンドル内(/Contents/Resources フォルダ)にコピーし、スクリプトエディタ上やScript Debugger上でsdefの名称(拡張子は省略)を「スクリプティング定義」の欄に記載します(textを「(text)」と書いていますが、「text」と書くのが正しいので念のため)。

このような変更を行った場合には、保存してスクリプトエディタ/Script Debuggerをいったん終了させると間違いがなくていい感じです。

Step 3:sdefに記述した予約語でハンドラを記述する


sdefファイルに記載した予約語がAppleScriptライブラリ内ですぐに使用できるようになります。ただし、呼び出し部分にだけ使うようにしないと、メンテナンス性が下がりまくる(作者以外誰も読めなくなる)ので注意が必要です。ライブラリ本体の機能をライブラリのsdefで定義した予約語を使いまくって、作者以外誰もメンテナンスできない状態になっているライブラリの実例がこちらで確認できます(applescript-stdlib)。

これで、sdefに記載した予約語を使ってScriptを呼び出せるようになりました。エラーになるようなら、いったんスクリプトエディタ/Script Debuggerを終了させるとよいでしょう(sdefが不完全な場合もありますが)。

— Created 2019-08-12 by Takaaki Naganoya
— 2019 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use checkLib : script "checkboxLib"

set tList to {"にんじん", "ごぼう", "だいこん", "りんご", "キャベツ", "レタス", "じゃがいも", "にんじん", "小松菜", "青梗菜", "しいたけ", "舞茸"}

set cRes to choose checkbox main message "項目選択" sub message "適切なものを以下からえらんでください" with columns 2 with titles tList

★Click Here to Open This Script 

Step 4:パラメータ省略時に対応できるようにハンドラを書き換え

ただ、これだけだと「毎回パラメータをすべて指定しないと動かない」という間抜けライブラリになってしまいます。

そこで、パラメータの型宣言+省略時パラメータの指定を行えば省略に対応できます。パラメータ指定部はすべて省略指定に対応できるように書いておきましょう。

こんなところでしょうか。パラメータのうち必須でないものの省略を許容するためには、sdefでoptionalの指定を行うことも必要です。

この手の「1回書いたらあんまり書き換えないし、使い回しするにはコード量が多くてめんどくさい」処理については、sdefをつけたライブラリにしておくといいのかもしれません。全部が全部、すべてそういう形式にするわけにもいきませんが、自分で予約語を拡張できるようになっているので、使ってみるとよいでしょう。

この段階になって、ライブラリ>Script Library(~/Library/Script Libraries)フォルダに入れてスクリプトの書き換えなどを行っていると、前回書き換えた内容が再オープン時に反映されないといった現象が発生することがあります。書き換えた、保存したはずなのに元に戻っているというのは、ライブラリのキャッシュを別途行っているためということだと理解しました。

なので、ライブラリの書き換えを行うさいには、テキスト形式などで別途ソースを保存しておくことを強くおすすめします。ここだけ、怪奇現象っぽい挙動に直面するところですが、焦らず慌てず作業すれば「単なる作業」なので、難しくありません。

AppleScript名:check box sample 2
— Created 2019-08-12 by Takaaki Naganoya
— 2019 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use checkLib : script "checkboxLib"

set tList to {"にんじん", "ごぼう", "だいこん", "りんご", "キャベツ", "レタス", "じゃがいも", "にんじん", "小松菜", "青梗菜", "しいたけ", "舞茸"}

set cRes to choose checkbox main message "項目選択" sub message "適切なものを以下からえらんでください" with columns 2 with titles tList
set cRes to choose checkbox main message "項目選択" sub message "適切なものを以下からえらんでください" with titles tList
set cRes to choose checkbox main message "項目選択" with titles tList
set cRes to choose checkbox with titles tList
set cRes to choose checkbox

★Click Here to Open This Script 

More from my site

  • 丸つき数字を数値にデコードする v2丸つき数字を数値にデコードする v2
  • common elements Libをロシア語などのクエリーで呼び出すcommon elements Libをロシア語などのクエリーで呼び出す
  • Wikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script LibraryWikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script Library
  • 自然言語テキストから複数の日付情報を抽出自然言語テキストから複数の日付情報を抽出
  • BlogアーカイブのMarkdown書類をリネーム。親、親+1階層フォルダをMM, YYYYとみなして反映BlogアーカイブのMarkdown書類をリネーム。親、親+1階層フォルダをMM, YYYYとみなして反映
  • Numbersで各シート名称を置換Numbersで各シート名称を置換
(Visited 102 times, 1 visits today)
Posted in dialog GUI sdef | Tagged 10.12savvy 10.13savvy 10.14savvy | 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

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • UI Browserがgithub上でソース公開され、オープンソースに
  • Xcode 14.2でAppleScript App Templateを復活させる
  • macOS 13 TTS Voice環境に変更
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • macOS 13でNSNotFoundバグふたたび
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • 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
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • 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)
  • 未分類

アーカイブ

  • 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