Forum: Ruby RubyAEOSA and Address Book

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
unknown (Guest)
on 2005-12-27 14:44
(Received via mailing list)
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
unknown (Guest)
on 2006-01-01 16:10
(Received via mailing list)
Une bévue <removed_email_address@domain.invalid> wrote:

> however i have a syntax prob using Address Book.

sorry for the noise, i've forgotten that even if the script is written
in Ruby, in the AppleScript tell part i don't to use a reserved word as
"as" )))
This topic is locked and can not be replied to.