仕事ではFinder操作を扱うAppleScriptをときどき書いていますが、レコードの値にアクセスする方法がわからなくて困っていました。
例えばこんなふうなことをAppleScriptでしたいのですよ……。
//これはJavaScript var dataList = { "こがね": {age: 19, birth: "Nagasaki"}, "さくや": {age: 18, birth: "Kouchi"}, "まみみ": {age: 18, birth: "Kanagawa"}, "ゆいか": {age: 19, birth: "Fukushima"}, "きりこ": {age: 17, birth: "Aomori"} }; var aKey = "こがね"; //リストから選んだ結果として文字列が返ってきたとして alert(aKey+"の年齢:"+dataList[aKey].age+", 出身地:"+dataList[aKey].birth);
ところがAppleScriptではこうはいかない。
そしたらこちらに解決策というか打開策がありました。
というわけでそこから拝借して自分で書いたコードがこちら。
set nameList to {"こがね", "さくや", "まみみ", "ゆいか", "きりこ"} set dataList to {|こがね|:{age:19, birth:"長崎"}, |ゆいか|:{age:19, birth:"福島"}, |さくや|:{age:18, birth:"高知"}, |まみみ|:{age:18, birth:"神奈川"}, |きりこ|:{age:17, birth:"青森"}} choose from list nameList set aKey to result set res to getAttributes(dataList, aKey) display dialog (aKey & "の年齢:" & res's age & ", 出身地:" & res's birth) as text on getAttributes(dataList, aKey) run script " on value_of(obj) obj's |" & aKey & "| end me" result's value_of(dataList) end getAttributes
いやーすっきりした!!!
もくもく会Slackチャンネルでお付き合いくださったMD5500さん、ありがとう!
【追記 5/25 10:40】
set aKey to choose from list nameList
MDさんに教えてもらったこちらのほうが好きかも。result
って予約語がいまいちわからないので…。
MDさんサンキューデース!