如何处理AppleScript结果返回的列表?

时间:2019-04-15 09:11:11

标签: applescript

AppleScript新手在这里。我有一个相当简单的问题,我似乎无法在网上找到答案。我保证我已经花了几个小时自行寻找答案,但是我没有在搜索正确的关键字,或者没有在阅读正确的资源。所以这里是:

我已经成功编写了脚本代码,告诉应用程序返回用户信息作为结果。但是,结果以列表形式返回,我一生都无法弄清楚如何操作或使用它。这是我的结果的示例:

{{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}

如果我只想获取USER_ID,我将如何实现?我敢肯定,这不是很难的事,请不要因为我自己弄不懂它而告我。我已经阅读了Apple's Scripting Guide中的整个“操作项目列表”部分,但就像我阅读的其他资源一样,它们都使用用户定义的列表,而不是结果返回的内容。

这是我尝试过的:

Return item n of result

Return item n of result as string

我收到“无法获得第n个项目”错误,因此我尝试将结果分配给变量,例如列表

set theList to result as list
Return item n of theList

仍然无效。然后,我尝试将结果转换为字符串,但随后却将所有内容都变成了一个很难操作的长字符串。

FIRST_NAMELAST_NAMEPHONE_NUMUSER_EMAILUSER_IDUSER_TITLE

我什至尝试了《 Apple脚本指南》中的处理程序,并能够以字符串之间的空格获取结果。同样,我无法操纵它。

是否可以从结果列表中选择一项?我觉得自己正在接近完全错误。非常感谢SOOOO的投入和教育。

也感谢您容忍我的新手询问。

2 个答案:

答案 0 :(得分:1)

您所拥有的是一个列表列表,因此(假设内部列表始终具有相同的结构):

set aList to {{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}

item 5 of item 1 of aList

--> "USER_ID"

答案 1 :(得分:1)

实际上您的列表是嵌套的,请注意括号{{ ... }}

的数量

外部列表包含一个项目,即内部列表。

此代码在对话框中显示每个字段

set theList to {{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}
set fields to item 1 of theList -- gets the inner list
repeat with aField in fields
   display dialog aField buttons {"OK"} default button 1
end repeat

或获取特定索引的项目

set userID to item 5 of fields

不要将字符串强制转换为字符串,将列表强制转换为列表,这两个强制都是多余的。