From: pere.noel@... (=?ISO-8859-1?Q?Une_b=E9vue?=) Date: 2005-12-27T21:42:54+09:00 Subject: [MacOS X] RubyAEOSA and Address Book i'm trying RubyAEOSA with Address Book, it works great and much more faster than AppleScript ;-) actually i get 12 s to get the result with AppleSCript and only 0.868 s with RubyAEOSA script (not finished yet) however i have a syntax prob using Address Book. the prob comes only when attempting to retrieve attributes related to address. if in RubyAEOSA i write : set al to label of every address of every person that's ok, i'm able to retrieve the label of the address howver, when adding : set as to street of every address of every person i get an error : [0m~/work/Ruby/rubyaeosa-0.2.3/sample> ./AddressBook2vCardXml.rb /opt/local/lib/ruby/site_ruby/1.8/osx/aeosa/osacomponent.rb:32:in `compile_execute': (-1753) OSACompileExecute (RuntimeError) from /opt/local/lib/ruby/site_ruby/1.8/osx/aeosa/osacomponent.rb:32:in `do_script' from /opt/local/lib/ruby/site_ruby/1.8/osx/aeosa/osacomponent.rb:17:in `do_osascript' from ./AddressBook2vCardXml.rb:12:in `album_list' from ./AddressBook2vCardXml.rb:57 same error when doing : set {al,as,az,ac,ast,aco} to {label, street, zip, city, state, country} of every address of every person {c,o,d,t,f,l,n,el,ev,ul,uv,pl,pv,al,{al,as,az,ac,ast,aco}} what surprised me here is in the fact i'm using the same approach for email address : set el to label of every email of every person set ev to value of every email of every person and that IS working... what do you think is the good syntax for address ??? in case you have some light for me ! interested part of my AppleScript version : ------------------------------------------- tell application "Address Book" set theCount to count of every person set companies to company of every person set organizations to organization of every person set departments to department of every person set titles to title of every person set firstNames to first name of every person set lastNames to last name of every person set {emailLabels, emailValues} to {label, value} of every email of every person set {urlLabels, urlValues} to {label, value} of every url of every person set {phoneLabels, phoneValues} to {label, value} of every phone of every person set {addressLabels, addressStreets, addressZips, addressCities, addressStates, addressCountries} to {label, street, zip, city, state, country} of every address of every person set notes to note of every person end tell ------------------------------------------- interested part of my RubyAEOSA version : ------------------------------------------- def album_list result = OSX.do_osascript %{ tell application "Address Book" set c to company of every person set o to organization of every person set d to department of every person set t to title of every person set f to first name of every person set l to last name of every person set n to note of every person set el to label of every email of every person set ev to value of every email of every person set ul to label of every url of every person set uv to value of every url of every person set pl to label of every phone of every person set pv to value of every phone of every person set {al,as,az,ac,ast,aco} to {label, street, zip, city, state, country} of every address of every person {c,o,d,t,f,l,n,el,ev,ul,uv,pl,pv,al,{al,as,az,ac,ast,aco}} end tell } co = result[0].map {|i| i.to_s} org = result[1].map {|i| i.to_rbobj } de = result[2].map {|i| i.to_rbobj } ti = result[3].map {|i| i.to_rbobj } fn = result[4].map {|i| i.to_rbobj } ln = result[5].map {|i| i.to_rbobj } no = result[6].map {|i| i.to_rbobj } el = result[7].map {|i| i.to_rbobj } ev = result[8].map {|i| i.to_rbobj } ul = result[9].map {|i| i.to_rbobj } uv = result[10].map {|i| i.to_rbobj } pl = result[11].map {|i| i.to_rbobj } pv = result[12].map {|i| i.to_rbobj } return ln.map {|k| [ rand(10000), [co.shift,org.shift,de.shift,ti.shift,fn.shift,k,no.shift,el.shift,ev.sh ift,ul.shift,uv.shift,pl.shift,pv.shift]]} end ------------------------------------------- i don't use {al,as,az,ac,ast,aco} to this time because it's buggy )) -- une b�vue