I have an Address Book script which worked perfectly in Leopard but one part is not working under Snow Leopard. Grateful if knows if anything has changed in Snow Leopard and how to correct it.
The script will search for address book entries with the same company name as the current selected entry and put a URL to link to the company entry. This allows me to have multiple people from a company but not repeat the company address every time because I can just click on the URL to see the company details.
Everything is working fine except that the script no longer creates the URL entry (see “make new url…” in last few lines of the script). I’ve proven that the script is getting to the relevant code by inserting “display dialogs” before and after the “make new url…” command.
Help to get this working again would be most appreciated.
Full script code below:
using terms from application "Address Book"
-- Link action to the address property
on action property
return "address"
end action property
-- Set message to be displayed on click on address
on action title for p with e
if (company of p) then
error number -128
else
if (organization of p) is missing value then
error number -128
else
set textMessage to "Look up entry for " & (organization of p)
end if
end if
return textMessage
end action title
-- Enable action
on should enable action for p with e
return true
end should enable action
-- Action when clicked
on perform action for p with e
-- Find if any company entries with same company name
set listCompany to (every person whose organization starts with organization of p ¬
and company is true ¬
and name ≠name of p)
set lengthList to length of listCompany
-- If no matching entries, display dialog
if lengthList = 0 then
display dialog "No entries found for " & organization of p ¬
buttons {"OK"} cancel button {"OK"}
else
-- If only one matching entry, set company ID to that entry
if lengthList = 1 then
set companyID to id of item 1 of listCompany
else
-- If more than one entry, get list, select required entry & then
-- set company ID to selected entry
if lengthList > 1 then
set listCompanyName to {}
-- Set entries to company name & city to make selection easier
repeat with oneCompany in listCompany
set end of listCompanyName to name of oneCompany & ", " & ¬
city of first address of oneCompany
end repeat
-- Select company
set selectedCompany to choose from list listCompanyName with prompt ¬
"Select company to link" without empty selection allowed
-- Loop through list to get selected company & id for URL
repeat with i from 1 to lengthList
if item i of listCompanyName as string = selectedCompany as string then
set companyID to id of item i of listCompany
exit repeat
end if
end repeat
end if
end if
end if
-- Create the URL for the link to the company
make new url at end of urls of p with properties ¬
{label:"company", value:"addressbook://" & companyID}
end perform action
end using terms from