# RubyAEOSA and Address Book

**URL:** <https://www.ruby-forum.com/t/rubyaeosa-and-address-book/77227>\
**Category:** Ruby\
**Created:** [December 27, 2005, 1:44pm UTC](https://www.ruby-forum.com/t/rubyaeosa-and-address-book/77227 "2005-12-27T13:44:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [December 27, 2005, 1:44pm UTC](https://www.ruby-forum.com/t/rubyaeosa-and-address-book/77227/1 "2005-12-27T13:44:25Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [January 1, 2006, 3:10pm UTC](https://www.ruby-forum.com/t/rubyaeosa-and-address-book/77227/2 "2006-01-01T15:10:45Z")

</div>

Une bévue [removed\_email\_address@domain.invalid](mailto: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” )))
