如何使用AppleScript和数字从联系人组名称中创建弹出菜单?

如何使用AppleScript和数字从联系人组名称中创建弹出菜单?,applescript,contacts,Applescript,Contacts,请注意:该网站不允许我发布这个问题,除非我的格式不正确,即“代码”的两个中间部分实际上不是代码。我已经尽了最大的努力编辑它,修复它,如果格式不好,我道歉 我发现并调整了两个脚本,它们分别运行。这是我的第一个AppleScript项目,我希望帮助将它们结合在一起制作一个脚本。 我希望脚本2使用脚本1的结果。 e、 g.将菜单项设置为(脚本1结果名称) 我在联系人中创建了一个虚拟测试组。弹出菜单只需要名称。稍后,我将在另一个脚本中使用相应的电子邮件地址 我希望这足够清楚。提前感谢你的帮助 脚本1 -

请注意:该网站不允许我发布这个问题,除非我的格式不正确,即“代码”的两个中间部分实际上不是代码。我已经尽了最大的努力编辑它,修复它,如果格式不好,我道歉

我发现并调整了两个脚本,它们分别运行。这是我的第一个AppleScript项目,我希望帮助将它们结合在一起制作一个脚本。

我希望脚本2使用脚本1的结果。 e、 g.将菜单项设置为(脚本1结果名称)

我在联系人中创建了一个虚拟测试组。弹出菜单只需要名称。稍后,我将在另一个脚本中使用相应的电子邮件地址

我希望这足够清楚。提前感谢你的帮助

脚本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
脚本1结果需要分析

"Joe BloggsMolly MousePeter Pan"
对此

{"Joe Bloggs", "Molly Mouse", "Peter Pan"}
所以我可以在下面的脚本2菜单中使用它

脚本2必须使用脚本1结果中的名称,如下所示

-- 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

第一个脚本遍历列表中的项目以创建字符串,而第二个脚本只需要列表。由于Contacts应用程序将为您提供一个姓名列表,因此根本不需要第一个脚本-第二个脚本的
菜单项可以设置为:

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

Thank@red_nemage.在很多地方都尝试过这个方法,不管有没有第一个脚本,要么出现错误(各种各样),要么脚本编辑器说正在运行,并且不会停止,除非我强制退出。第一个脚本似乎是指定特定单元格所必需的。还尝试使用告诉应用程序进程联系人…第一个脚本所做的只是从联系人名称中生成一个字符串(您不使用)。我测试了第二个脚本,它是用设置menuItems的新语句编写的(如果您查看它,它只是一个名称列表),并且它与我的联系人列表的预期效果一样。第一个Numbers tell语句设置单元格,然后第二个System Events tell语句填充菜单。工作表必须已经存在。谢谢。我明白,但不知道该把声明放在哪里,这样它就能工作了……好的,明白了!我把你的陈述放在第二个脚本的开头,它非常有效。(奇怪的是,它不需要结束语)谢谢@red_nemage-我感谢你的时间。一些语句,如
if
tell
有简单(单行)和复合(多行)形式,例如
if this then that
将此告诉那个