Search code examples
applescriptcontacts

How do I make a Pop-Up Menu from my Contacts Group names, using AppleScript and Numbers?


Please note: The site is not letting me post this question unless I incorrectly format it i.e. the two middle sections of "code" which aren't actually code. I've done my best to edit it, to fix it, and I apologise if the formatting is poor.

I’ve found and adjusted two scripts, which run, individually. This is my first AppleScript project, and I’d like help joining them together to MAKE ONE SCRIPT.

I want Script 2 to use the result from Script 1. e.g. set menuItems to (Script 1 Result names)

I made a dummy testGroup in my Contacts. The Pop-Up Menu only needs the names. I will use the corresponding email addresses later, in another script.

I hope this is clear enough. Thanks in advance for your help.

Script 1

--returns Contacts testGroup’s names and email addresses

set myList to ""
tell application "Contacts" to repeat with p in people in group "testGroup"
    if emails of p is {} then
        set e to ""
    else
        set e to value of email 1 of p
    end if
    set myList to myList & name of p
end repeat

Script 1 Result needs parsing...

"Joe BloggsMolly MousePeter Pan"

to this...

{"Joe Bloggs", "Molly Mouse", "Peter Pan"}

so I can use it in Script 2 menuItems below.

Script 2 MUST use names from Script 1 Result, like this

-- Make Pop-Up Menu in Numbers spreadsheet which is already open.

set menuItems to {"Joe Bloggs", "Molly Mouse", "Peter Pan"}

tell application "Numbers"
    activate
    tell the first table of the active sheet of document 1
        tell cell "A3"
            set value to item 1 of menuItems
            set the format to pop up menu
        end tell
    end tell
end tell


tell application "System Events"
    tell application process "Numbers"
        set frontmost to true
        tell window 1
            click radio button "Cell" of radio group 1
            repeat with i from 2 to (count menuItems)
                click button 1 of group 1 of scroll area -1
                keystroke (item i of menuItems)
            end repeat
        end tell
    end tell
end tell

Solution

  • The first script is going through the items of a list list to create a string, while the second script is just wanting the list. Since the Contacts application will give you a list of names, the first script isn't needed at all - the menuItems of the second script can just be set with:

    tell application "Contacts" to set menuItems to the name of people in group "testGroup"