FasdUAS 1.101.10 k l YS Written by: Sean Long On: 09/01/2004 From: http://www.hailstonesoftware.com Purpose: Create a CSV(comma separated value) file of all entries in Mac OS X Address Book. This CSV file can then be saved to disk and used to import the Address Book data into Mozilla Thunderbird. License: free to use how you choose. ----------------------------------------------------------------------------- Modified by: Steve McMillen On: 11/08/2008 Modified to loop thru each address book group creating separate files, one for each group. To specify groups change the values in Groupnames below. To process all entries comment out the line: set Groupnames to {"xyz"}, to comment out put -- at the begining of the line. Use "do shell script" to write output directly to file instead of loading in TextEdit (makes it easier to keep workin while the script runs). CAUTION!! A file for each group will be created on the desktop with the following naming scheme: 'GroupName Addressbook.csv' If any file(s) with the same name(s) exist they will be over-written, so check before running this script.    Written by: Sean Long On: 09/01/2004 From: http://www.hailstonesoftware.com Purpose: Create a CSV(comma separated value) file of all entries in Mac OS X Address Book. This CSV file can then be saved to disk and used to import the Address Book data into Mozilla Thunderbird. License: free to use how you choose. ----------------------------------------------------------------------------- Modified by: Steve McMillen On: 11/08/2008 Modified to loop thru each address book group creating separate files, one for each group. To specify groups change the values in Groupnames below. To process all entries comment out the line: set Groupnames to {"xyz"}, to comment out put -- at the begining of the line. Use "do shell script" to write output directly to file instead of loading in TextEdit (makes it easier to keep workin while the script runs). CAUTION!! A file for each group will be created on the desktop with the following naming scheme: 'GroupName Addressbook.csv' If any file(s) with the same name(s) exist they will be over-written, so check before running this script.  l  lr Or kq l l # Create a list of group names: Create a list of group names r  c J m  list o 0 groupnames Groupnames O 2 ! k1""#$ #l%& %# Repeat for each address book&'': Repeat for each address book$( (X1)* )k!,++,- ,l!!./ .  Get the address book name/004 Get the address book name-12 1r!&34 3n!$56 51"$  pnam 6o!" 0thegrouptheGroup 4o 0 groupname GroupName27 7r',89 8b'*:; :o'( 0 groupnames Groupnames ;o() 0 groupname GroupName 9o 0 groupnames Groupnames 0thegrouptheGroup *2  azf5 !m <<adrbalisFHDqH+Address Book.appB ApplicationsqIBb HD:Applications:Address Book.app"Address Book.appHDApplications/Address Book.app/=> =l33>?@ ?l33AB ATN Comment this out to process ALL contacts or edit to only include a few groupsBCC Comment this out to process ALL contacts or edit to only include a few groups@DE Dr39FG FJ37HHIJ Im34KKLLBusinessJM Mm45NNOO Family Go 0 groupnames GroupnamesEPQ Pl::QRS Rl::TU TMG Now loop thru all the GroupNames and put each group in a separate fileUVV Now loop thru all the GroupNames and put each group in a separate fileSWX WX:oYZ YkJj[[\] \lJJ]^_ ^lJJ`a `<6 Define a filename we will append to after each personabbl Define a filename we will append to after each person_cd cOJsef ekNrgghi hrNjjk jbNflm lbNbno nbN^pq pnN\rs r1X\  psxp s4NXt  file tlPWu uIPWvw .earsffdralis afdr vmPQ  afdmdeskwx  rtyp xmRS  ctxt qo\] 0 groupname GroupName om^ayyzz Addressbook mmbe{{||.csv ko 0fnamei}~ }lkk $ display dialog abook_filename< display dialog abook_filename~ Ikr .ascrcmnt******** okn 0fname fmJKMACSalisTHDqH+ Finder.appEL & CoreServicesqI  f e)HD:System:Library:CoreServices:Finder.app Finder.appHD&System/Library/CoreServices/Finder.app/d ltt ltt Yth kc l r n 4  azf4 o 0i 4  azf5 o 0 groupname GroupName o 0 thisperson thisPerson l Z l I .coredoexboolobj n 1  azf7 o 0 thisperson thisPerson r n 1  azf7 o 0 thisperson thisPerson o 0 m_firstname m_firstName r m o 0 m_firstname m_firstName l Z l I .coredoexboolobj n 1  azf8 o 0 thisperson thisPerson r n 1  azf8 o 0 thisperson thisPerson o 0 m_lastname m_lastName r m o 0 m_lastname m_lastName l Z l I .coredoexboolobj n 1  pnam o 0 thisperson thisPerson r n 1  pnam o 0 thisperson thisPerson o 0 m_displayname m_displayName r m o 0 m_displayname m_displayName l Z" l I .coredoexboolobj n 1  az43 o 0 thisperson thisPerson r  n  1  az43 o  0 thisperson thisPerson o 0 m_nickname m_nickName r" m o~ ~0 m_nickname m_nickName l##}|{}|{ r#* m#& oz z 0m_email r+2 m+. oy y 0m_email2 l33xwvxwv l33uu & get the first 2 email addresses@ get the first 2 email addresses Z3ts l3>rq I3>po p.coredoexboolobj n3: m6:n n az21 o36m m0 thisperson thisPersonorq YAlk kU ZUo ji =UX   oUVh h0j  mVWgg  r[k   n[g 1cgf f az17 n[c 4^ce e az21 oabd d0j o[^c c0 thisperson thisPerson  ob b 0m_emailji lppa`_a`_^ Zp]\ =ps opq[ [0j mqrZZ rv nv 1~Y Y az17 nv~ 4y~X X az21  o|}W W0j ovyV V0 thisperson thisPerson oU U 0m_email2]\^ l0j mDETT IEPS!R S.corecnte******** !nEL"# "2HLQ Q az21 #oEHP P0 thisperson thisPersonRkts$% $lONMONM%&' &lL()L (  figure out all the phones)**4 figure out all the phones'+, +r-. -m//00 .oK K0 m_workphone1 m_workPhone1,12 1r34 3m5566 4oJ J0 m_workphone2 m_workPhone2278 7r9: 9m;;<< :oI I0 m_workfax m_workFax8=> =r?@ ?mAABB @oH H0 m_homephone1 m_homePhone1>CD CrEF EmGGHH FoG G0 m_homephone2 m_homePhone2DIJ IrKL KmMMNN LoF F0 m_homefax m_homeFaxJOP OrQR QmSSTT RoE E0 m_mobilephone m_mobilePhonePUV UrWX WmYYZZ XoD D0 m_otherphone m_otherPhoneV[\ [r]^ ]m__`` ^oC C 0m_pager\ab alBA@BA@bcd cref ecgh gm? ? boovfals hm> > bool fo= =*0foundfirstworkphonefoundFirstWorkPhonedij irkl kcmn mm< < boovfals nm; ; bool lo: :*0foundfirsthomephonefoundFirstHomePhonejop ol987987pqr qZ%st65 slu43 uI2v1 2.coredoexboolobj vnwx wm0 0 az20 xo/ /0 thisperson thisPerson143 tY!y.z{- yk||}~ }r n 4, , az20 o+ +0j o* *0 thisperson thisPerson o) )0 thisphone thisPhone~ r* n& 1"&( ( az18 o"' '0 thisphone thisPhone o& & 0thisphonelabelthisPhoneLabel r+6 n+2 1.2% % az17 o+.$ $0 thisphone thisPhone o# # 0thisphonevaluethisPhoneValue l77"! "!  Z7 l7J F7J =7> o7:  0thisphonelabelthisPhoneLabel m:=work =AF oAD *0foundfirstworkphonefoundFirstWorkPhone mDE  boovfals kMZ rMT oMP  0thisphonevaluethisPhoneValue o 0 m_workphone1 m_workPhone1 rUZ mUV  boovtrue o *0foundfirstworkphonefoundFirstWorkPhone l]p F]p =]d o]`  0thisphonelabelthisPhoneLabel m`cwork =gl ogj *0foundfirstworkphonefoundFirstWorkPhone mjk  boovtrue rsz osv  0thisphonevaluethisPhoneValue o 0 m_workphone2 m_workPhone2 l} F} =} o} 0thisphonelabelthisPhoneLabel mhome = o *0foundfirsthomephonefoundFirstHomePhone m  boovfals  k r o 0thisphonevaluethisPhoneValue o 0 m_homephone1 m_homePhone1 r m  boovtrue o *0foundfirsthomephonefoundFirstHomePhone l F = o  0thisphonelabelthisPhoneLabel mhome = o *0foundfirsthomephonefoundFirstHomePhone m  boovtrue r o 0thisphonevaluethisPhoneValue o 0 m_homephone2 m_homePhone2 l = o 0thisphonelabelthisPhoneLabel mwork fax r o 0thisphonevaluethisPhoneValue o 0 m_workfax m_workFax l = o 0thisphonelabelthisPhoneLabel mhome fax r o 0thisphonevaluethisPhoneValue o 0 m_homefax m_homeFax l = o 0thisphonelabelthisPhoneLabel m mobile r o 0thisphonevaluethisPhoneValue o 0 m_mobilephone m_mobilePhone l = o 0thisphonelabelthisPhoneLabel m pager r  o  0thisphonevaluethisPhoneValue o 0m_pager r o 0thisphonevaluethisPhoneValue o 0 m_otherphone m_otherPhone  l .0j zm {I  .corecnte********  n    2  az20  o 0 thisperson thisPerson-65r   l&& l&&  figure out the addresses2 figure out the addresses r&- m&) o 0 m_workstreet m_workStreet l.5 r.5 m.1!!""  o 0 m_workstreet2 m_workStreet2  not used## not used$% $r6=&' &m69(()) 'o 0 m_workcity m_workCity%*+ *r>E,- ,m>A..// -o 0 m_workstate m_workState+01 0rFM23 2mFI4455 3o 0 m_workzip m_workZip167 6rNU89 8mNQ::;; 9o 0 m_workcountry m_workCountry7<= <rV]>? >mVY@@AA ?o 0 m_homestreet m_homeStreet=BC Bl^eDEF Dr^eGH Gm^aIIJJ Ho 0 m_homestreet2 m_homeStreet2 E not usedFKK not usedCLM LrfmNO NmfiPPQQ Oo 0 m_homecity m_homeCityMRS RrnuTU TmnqVVWW Uo 0 m_homestate m_homeStateSXY Xrv}Z[ Zmvy\\]] [o 0 m_homezip m_homeZipY^_ ^r~`a `m~bbcc ao 0 m_homecountry m_homeCountry_de dlefg fZOhi hlj jIk .coredoexboolobj knlm lm  az27 mo 0 thisperson thisPerson iYKnop nkFqqrs rlstu trvw vnxy x4z  az27 zo 0j yo 0 thisperson thisPerson wo 0thisaddrthisAddru{| {r}~ }n 1  az18 o 0thisaddrthisAddr ~o 0 thisaddrlabel thisAddrLabel| l ZD l = o 0 thisaddrlabel thisAddrLabel mwork k r n 1  az28 o 0thisaddrthisAddr o 0 m_workstreet m_workStreet r n 1  az29 o 0thisaddrthisAddr o 0 m_workcity m_workCity r n 1  az30 o 0thisaddrthisAddr o 0 m_workstate m_workState r n 1  az31 o 0thisaddrthisAddr o 0 m_workzip m_workZip r n 1  az32 o 0thisaddrthisAddr o 0 m_workcountry m_workCountry k D r  n  1   az28 o  0thisaddrthisAddr o 0 m_homestreet m_homeStreet r  n 1  az29 o 0thisaddrthisAddr o 0 m_homecity m_homeCity r!, n!( 1$(  az30 o!$ 0thisaddrthisAddr o 0 m_homestate m_homeState r-8 n-4 104  az31 o-0 0thisaddrthisAddr o 0 m_homezip m_homeZip r9D n9@ 1<@  az32 o9< 0thisaddrthisAddr o 0 m_homecountry m_homeCountry lEE 0j om pI .corecnte******** n 2  az27 o 0 thisperson thisPersong lPP ZPs lP[ IP[ .coredoexboolobj nPW 1SW~ ~ az12 oPS} }0 thisperson thisPerson r^i n^e 1ae| | az12 o^a{ {0 thisperson thisPerson oz z0 m_jobtitle m_jobTitle rls mlo oy y0 m_jobtitle m_jobTitle lttxwvxwv Ztu ltts Itrq r.coredoexboolobj nt{ 1w{p p az55 otwo o0 thisperson thisPersonqts r n 1n n az55 om m0 thisperson thisPerson ol l0 m_departmentu r m ok k0 m_department ljihjih Zg lfe Idc d.coredoexboolobj n 1b b az38 oa a0 thisperson thisPersoncfe r n 1` ` az38 o_ _0 thisperson thisPerson o^ ^0m_organizationg r m o] ]0m_organization l\[Z\[Z Z  Y  l XW  IVU V.coredoexboolobj n 1T T az13 oS S0 thisperson thisPersonUXW  r n 1R R az13 oQ Q0 thisperson thisPerson oP P0 m_homepage m_homePageY  r m oO O0 m_homepage m_homePage  lNMLNML l r !  m""## !oK K0 m_homepage2 m_homePage2 +% AddressBook only supports 1 web page$$J AddressBook only supports 1 web page%& %lJIHJIH&'( 'lGFEGFE()* )lDCBDCB*+, +r-. -m//00 .oA A0 m_birthyear m_birthYear,12 1r34 3m5566 4o@ @0 m_birthmonth m_birthMonth278 7r9: 9m;;<< :o? ?0 m_birthday m_birthDay8=> =ZA?@>= ?l A<; AI :B9 :.coredoexboolobj BnCD C18 8 az11 Do7 70 thisperson thisPerson9<; @k=EEFG FrHI HnJK J16 6 az11 Ko5 50 thisperson thisPerson Io4 4 0bdaybDayGLM Ll321321MNO Nr%PQ Pn!RS R1!0 0 year So/ / 0bdaybDay Qo. .0 m_birthyear m_birthYearOTU Tr&1VW Vn&-XY Xm)-- - mnth Yo&), , 0bdaybDay Wo+ +0 m_birthmonth m_birthMonthUZ* Zr2=[\ [n29]^ ]159) ) day ^o25( ( 0bdaybDay \o' '0 m_birthday m_birthDay*>=>_` _lBB&%$&%$`ab aZBncd#e clBMf"! fIBM g .coredoexboolobj gnBIhi hmEI  az22 ioBE 0 thisperson thisPerson"! drPdjk jbP`lm lmPSnnoo (AIM) mnS_pq p1[_  az17 qnS[rs r4V[t  az22 tmYZ soSV 0 thisperson thisPerson ko 0 m_aimname m_aimName# ergnuv umgjwwxx vo 0 m_aimname m_aimNamebyz ylooz{| {Zo}~ }loz Ioz .coredoexboolobj nov mrv  az26 oor 0 thisperson thisPerson ~r} b} m} (ICQ) n 1  az17 n 4   az26 m   o 0 thisperson thisPerson o 0 m_icqname m_icqName r m o 0 m_icqname m_icqName| l Z l I .coredoexboolobj n 1  az37 o 0 thisperson thisPerson r n 1  az37 o 0 thisperson thisPerson o 0m_notes r m o 0m_notes l l " add any left overs to notes8 add any left overs to notes Z l > o 0 m_homephone2 m_homePhone2 m l r b b b o 0m_notes m mhome phone2 = o 0 m_homephone2 m_homePhone2 o 0m_notes :4should be on separate line so line break is appendedhshould be on separate line so line break is appended l Z l > o 0 m_workphone2 m_workPhone2 m l r b b b o 0m_notes m mwork phone2 = o 0 m_workphone2 m_workPhone2 o 0m_notes :4should be on separate line so line break is appendedhshould be on separate line so line break is appended l Z% l  >  o 0 m_otherphone m_otherPhone m  l! r! b b b o 0m_notes m mother phone = o 0 m_otherphone m_otherPhone o 0m_notes :4should be on separate line so line break is appendedhshould be on separate line so line break is appended l&& l&& done with this person*done with this person r&I b&E b&A   b&=   b&9   b&5 b&1 b&- b&) b&% b&! b& b& b& b&!" !b& #$ #b& %& %b&'( 'b&)* )b&+, +b&-. -b&/0 /b&12 1b&34 3b&56 5b&78 7b&9: 9b&;< ;b&=> =b&?@ ?b&AB Ab&CD Cb&EF Eb&GH Gb&IJ Ib&KL Kb&MN Mb&OP Ob&QR Qb&ST Sb&UV Ub&WX Wb&YZ Yb&[\ [b&]^ ]b&_` _b&ab ab&cd cb&ef eb&gh gb&ij ib&}kl kb&ymn mb&uop ob&qqr qb&mst sb&iuv ub&ewx wb&ayz yb&]{| {b&Y}~ }b&U b&Q b&M b&I b&E b&A b&= b&9 b&5 b&1 b&- m&) o), 0 m_firstname m_firstName m-0, o14 0 m_lastname m_lastName m58, o9< 0 m_displayname m_displayName m=@, oAD 0 m_nickname m_nickName mEH, oIL 0m_email mMP, oQT 0m_email2 ~mUX, |oY\ 0 m_workphone1 m_workPhone1 zm]`, xoad 0 m_homephone1 m_homePhone1 vmeh, toil 0 m_workfax m_workFax rmmp, poqt 0m_pager nmux, loy| 0 m_mobilephone m_mobilePhone jm}, ho 0 m_homestreet m_homeStreet fm, do 0 m_homestreet2 m_homeStreet2 bm, `o 0 m_homecity m_homeCity ^m, \o 0 m_homestate m_homeState Zm, Xo 0 m_homezip m_homeZip Vm, To 0 m_homecountry m_homeCountry Rm, Po 0 m_workstreet m_workStreet Nm, Lo 0 m_workstreet2 m_workStreet2 Jm, Ho 0 m_workcity m_workCity Fm, Do 0 m_workstate m_workState Bm, @o 0 m_workzip m_workZip >m, <o 0 m_workcountry m_workCountry :m, 8o 0 m_jobtitle m_jobTitle 6m, 4o 0 m_department 2m, 0o 0m_organization .m, ,o 0 m_homepage m_homePage *m, (o 0 m_homepage2 m_homePage2 &m, $o  0 m_birthyear m_birthYear "m ,  o 0 m_birthmonth m_birthMonth m, o 0 m_birthday m_birthDay m , o!$ 0 m_homephone2 m_homePhone2 m%(, o), 0 m_homefax m_homeFax m-0, o14 0 m_aimname m_aimName m58,  o9< 0 m_icqname m_icqName  m=@, oAD 0m_notes o *0m_dataforthispersonm_dataForThisPerson lJJ lJJ ZT Append record for this person to text file (each echo automatically adds a newline) Append record for this person to text file (each echo automatically adds a newline) lJJ HB Uncomment this line to write to disk (read caution in into first) Uncomment this line to write to disk (read caution in into first) IJa .sysoexecTEXTTEXT bJ] bJY bJU bJQ mJM echo " oMP *0m_dataforthispersonm_dataForThisPerson mQT " >> " oUX 0fname mY\" lbb lbb  Done with this person, Done with this person lbb 0i mwx Ix .corecnte******** nx 2|  azf4 4x|  azf5 oz{ 0 groupname GroupName lii  )#done with all people for this group   Fdone with all people for this group  lii 0 groupname GroupName Zo=> 0 groupnames GroupnamesX  lpp    done with all groups* done with all groups madrbalisFHDqH+Address Book.appB ApplicationsqIBb HD:Applications:Address Book.app"Address Book.appHDApplications/Address Book.app/ .aevtoappnull**** .aevtoappnull**** kr  0thegrouptheGroup 0 groupname GroupName 0i 0j~}|KN{zyxwvy{utsrqponmlkjihgf/e5d;cAbGaM`S_Y^_]\[ZYXWVUT!S(R.Q4P:O@NIMPLVK\JbIHGFEDCBA@?>=<;:9"8/756;543210/n.w-,+*)(  list 0 groupnames Groupnames  azf5  kocl  cobj ~.corecnte******** } pnam |0 groupname GroupName { file z afdmdesk y rtyp x ctxt w.earsffdralis afdr v psxp u 0fname t.ascrcmnt******** s azf4 r0 thisperson thisPerson q azf7 p.coredoexboolobj o0 m_firstname m_firstName n azf8 m0 m_lastname m_lastName l0 m_displayname m_displayName k az43 j0 m_nickname m_nickName i 0m_email h 0m_email2 g az21 f az17 e0 m_workphone1 m_workPhone1 d0 m_workphone2 m_workPhone2 c0 m_workfax m_workFax b0 m_homephone1 m_homePhone1 a0 m_homephone2 m_homePhone2 `0 m_homefax m_homeFax _0 m_mobilephone m_mobilePhone ^0 m_otherphone m_otherPhone ] 0m_pager \ bool [*0foundfirstworkphonefoundFirstWorkPhone Z*0foundfirsthomephonefoundFirstHomePhone Y az20 X0 thisphone thisPhone W az18 V 0thisphonelabelthisPhoneLabel U 0thisphonevaluethisPhoneValue T0 m_workstreet m_workStreet S0 m_workstreet2 m_workStreet2 R0 m_workcity m_workCity Q0 m_workstate m_workState P0 m_workzip m_workZip O0 m_workcountry m_workCountry N0 m_homestreet m_homeStreet M0 m_homestreet2 m_homeStreet2 L0 m_homecity m_homeCity K0 m_homestate m_homeState J0 m_homezip m_homeZip I0 m_homecountry m_homeCountry H az27 G0thisaddrthisAddr F0 thisaddrlabel thisAddrLabel E az28 D az29 C az30 B az31 A az32 @ az12 ?0 m_jobtitle m_jobTitle > az55 =0 m_department < az38 ;0m_organization : az13 90 m_homepage m_homePage 80 m_homepage2 m_homePage2 70 m_birthyear m_birthYear 60 m_birthmonth m_birthMonth 50 m_birthday m_birthDay 4 az11 3 0bdaybDay 2 year 1 mnth 0 day / az22 .0 m_aimname m_aimName - az26 ,0 m_icqname m_icqName + az37 * 0m_notes )*0m_dataforthispersonm_dataForThisPerson (.sysoexecTEXTTEXTsojv&EO$!*-[l kh,EO%E[OYUOlvEO4[l kh&*l /a,%a%a%E`O_j UOk*/a-j kh*/a/E`O_a,j _a,E`Y aE`O_a,j _a,E`Y aE`O_,j _,E`Y a E`O_a!,j _a!,E`"Y a#E`"Oa$E`%Oa&E`'O_a(,j SMk_a(-j khk_a(/a),E`%YhOl_a(/a),E`'Yh[OYYhOa*E`+Oa,E`-Oa.E`/Oa0E`1Oa2E`3Oa4E`5Oa6E`7Oa8E`9Oa:E`;Ofa<&E`=Ofa<&E`>O_a?,j ("k_a?-j kh_a?/E`@O_@aA,E`BO_@a),E`CO_BaD _=fa<&_CE`+OeE`=Y_BaE _=ea<& _CE`-Y_BaF _>fa<&_CE`1OeE`>Yy_BaG _>ea<& _CE`3YY_BaH _CE`/YE_BaI _CE`5Y1_BaJ _CE`7Y_BaK _CE`;Y _CE`9OP[OYYhOaLE`MOaNE`OOaPE`QOaRE`SOaTE`UOaVE`WOaXE`YOaZE`[Oa\E`]Oa^E`_Oa`E`aOabE`cO_ad,j k_ad-j kh_ad/E`eO_eaA,E`fO_fag@_eah,E`MO_eai,E`QO_eaj,E`SO_eak,E`UO_eal,E`WY=_eah,E`YO_eai,E`]O_eaj,E`_O_eak,E`aO_eal,E`cOP[OY\YhO_am,j _am,E`nY aoE`nO_ap,j _ap,E`qY arE`qO_as,j _as,E`tY auE`tO_av,j _av,E`wY axE`wOayE`zOa{E`|Oa}E`~OaE`O_a,j 4_a,E`O_a,E`|O_a,E`~O_a,E`YhO_a,j a_ak/a),%E`Y aE`O_a,j a_ak/a),%E`Y aE`O_a,j _a,E`Y aE`O_3a_a%a%_3%E`YhO_-a_a%a%_-%E`YhO_9a_a%a%_9%E`YhOa_%a%_%a%_%a%_"%a%_%%a%_'%a%_+%a%_1%a%_/%a%_;%a%_7%a%_Y%a%_[%a%_]%a%__%a%_a%a%_c%a%_M%a%_O%a%_Q%a%_S%a%_U%a%_W%a%_n%a%_q%a%_t%a%_w%a%_z%a%_|%a%_~%a%_%a%_3%a%_5%a%_%a%_%a%_%E`Oa_%a%_%a%j OP[OY OP[OYOPUascr ޭ