2

我的地址簿的备注字段中有两行

Test 1
Test 2

我想将每一行作为一个单独的值或从注释字段中获取最后一行。

我试过这样做:

tell application "Address Book"
 set AppleScript's text item delimiters to "space"
 get the note of person in group "Test Group"
end tell

但结果是

{"Test 1
Test 2"}

我在找 :

{"Test1","Test2"}

我在做什么不正确?

4

1 回答 1

5

您的代码有一些问题。首先,您从不真正要求注释的文本项 :-) 您只得到原始字符串。第二个是set AppleScript's text item delimiters to "space"将文本项分隔符设置为文字字符串space。因此,例如,运行

set AppleScript's text item delimiters to "space"
return text items of "THISspaceISspaceAspaceSTRING"

返回

{"THIS", "IS", "A", "STRING"}

其次,即使你有" "而不是"space",这会将你的字符串拆分为空格,而不是换行符。例如,运行

set AppleScript's text item delimiters to " "
return text items of "This is a string
which is on two lines."

返回

{"This", "is", "a", "string
which", "is", "on", "two", "lines."}

如您所见,"string\nwhich"是单个列表项。

做你想做的事,你可以使用paragraphs of STRING; 例如,运行

return paragraphs of "This is a string
which is on two lines."

返回所需的

{"This is a string", "which is on two lines."}

现在,我并不完全清楚想要做什么。如果你想为特定的人得到这个,你可以写

tell application "Address Book"
    set n to the note of the first person whose name is "Antal S-Z"
    return paragraphs of n
end tell

您必须将其拆分为两个语句,因为我认为这paragraphs of ...是一个命令,而第一行的所有内容都是一个属性访问。(老实说,我通常通过反复试验来发现这些东西。)

另一方面,如果您想为组中的每个人获取此列表,则稍微困难一些。一个大问题是没有笔记的人会得到missing value他们的笔记,这不是一个字符串。如果您想忽略这些人,那么以下循环将起作用

tell application "Address Book"
    set ns to {}
    repeat with p in ¬
        (every person in group "Test Group" whose note is not missing value)
        set ns to ns & {paragraphs of (note of p as string)}
    end repeat
    return ns
end tell

every person ...位完全按照其所说的进行,吸引相关人员;然后我们提取他们笔记的段落(在提醒 AppleScriptnote of p真正是一个字符串之后)。在此之后,ns将包含类似{{"Test 1", "Test 2"}, {"Test 3", "Test 4"}}.

于 2010-12-25T06:50:55.087 回答