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

【基礎】recordの属性値は各属性ラベルを指定して取り出す

Posted on 10月 30, 2018 by Takaaki Naganoya

# Blog消失前の投稿を再構成して「たぶんこんな内容」と推測して投稿したものです

AppleがOSに添付しているサンプルAppleScriptは内容がひどいという評判で、内容を見ると実際に仕事でAppleScriptを書いている連中も読むのが嫌になるという、ひどい見本でした。

 「AppleがOSに添付しているサンプルのように書かないことが上達への近道だ」
 「あのひどい内容のScriptを添付しているのは害悪以外の何物でもない」

といえるほど。さすがに批判も多かったのか、最悪の時期のサンプル(Mac OS X 10.5)のものは削除されましたが、この最悪の時期のサンプルを見てそのままコピペで書いた内容がひどかったので、そのもっともひどい部分を掲載。「絶対にこう書いてはいけない」という見本として示します。


出典「AppleScript最新リファレンス」

結果が代入される暗黙の変数、result

–Replace Text In Item Names
–Copyright © 2001–2007 Apple Inc.

display dialog "Search and replace in:" buttons {"File Names", "Folder Names", "Both"} default button 3
set the search_parameter to the button returned of the result

★Click Here to Open This Script 

AppleScriptは行単位で順次実行されますが、その行単位の実行結果はつねに「result」というシステム変数に入ります。

よほどトリッキーなプログラムでもないかぎり、resultが活躍する場面というのはほとんどありません。まして、前の行の計算結果をresultを介してやりとりすると、何をどう処理しているのかさっぱりわからなくなるので、「使わないほうがよいもの」として世間一般のScripterから避けられています。

それを、Mac OS X 10.5などという割とアップデートが一段落してMac OS Xの世界観が定着してきた頃になって引っ張りだしてきたので、Scripter連中は驚いたわけです。

参照渡しでもないのにサブルーチンの末尾で何もreturnで返り値を指定していないのにサブルーチンの処理結果がメイン側に戻るような場合には、この暗黙のresultの内容が戻っています。

最悪最低! recordの内容をlistに変換して取り出した

display dialog "TEST" default answer "AAA"

などと書いて実行すると、

{button returned:"OK", text returned:"AAA"}

のような結果が返ってきます。これらは、属性ラベルを指定して取り出すのですが、このAppleのサンプルでは、こともあろうにこの結果をlistに変換して処理していました。

–Replace Text In Item Names
–Copyright © 2001–2007 Apple Inc.

tell me to display dialog the error_message default answer new_item_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_item_name, button_pressed}

★Click Here to Open This Script 

これを見た初心者が、「AppleScriptのdisplay dialogの結果が毎回変わって取得できない」などと騒ぐ始末。recordなので、属性ラベルの登場順は保証されていない(むしろ、そんなもん毎回変わって当然)ものですが、それをrecordから属性ラベルを指定して取り出すのではなく、list(配列)に変換して順番に応じて結果を取り出そうとしたので「毎回変わる」などという話になったのでした。

これは、100% Appleのサンプルスクリプトが悪いですし、こんなものを標準添付している連中の気が知れません。サンプルスクリプトとしては史上最低最悪のレベルと呼んで差し支えありません。

それぞれ、recordから値を取り出す場合には属性ラベルを指定して取り出すというのがセオリーです。

set aRes to (display dialog "TEST" default answer "AAA")
–> {button returned:"OK", text returned:"BBBBB"}

set buttonRes to button returned of aRes
–> "OK"

set textRes to text returned of aRes
–> "BBBBB"

★Click Here to Open This Script 

More from my site

  • Pagesでテキストアイテムか本文テキストから最大文字サイズのテキストを返すPagesでテキストアイテムか本文テキストから最大文字サイズのテキストを返す
  • 配列に入れた画像を類似度でソートする配列に入れた画像を類似度でソートする
  • 指定のtarアーカイブを展開する指定のtarアーカイブを展開する
  • Keynoteで一番左上のshapeオブジェクトに他のshapeのサイズを合わせるKeynoteで一番左上のshapeオブジェクトに他のshapeのサイズを合わせる
  • スリープおよびスリープ解除Notificationを受信スリープおよびスリープ解除Notificationを受信
  • asoc_レコード内の計算(最小)v2asoc_レコード内の計算(最小)v2
(Visited 54 times, 1 visits today)
Posted in Record | 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上でソース公開され、オープンソースに
  • macOS 13 TTS Voice環境に変更
  • Xcode 14.2でAppleScript App Templateを復活させる
  • 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