다음은 다섯 줄까지 간단하게 할 수 있습니다 :
tell application "Address Book"
add (every person whose birth date is missing value) to ¬
make new group with properties {name:"No Birthday"}
save addressbook
end tell
add
은 목록뿐만 아니라 단일 개체를 취할 수 있으므로 루프를 건너 뛸 수 있습니다. 루프를 사용했다면 repeat with thePerson in people ... end repeat
양식을 사용했을 가능성이 있습니다. 다음으로 주소록에 생일 축하 메시지가 missing value
(실제로는 null
)으로 저장되어있는 것으로 보입니다. 조기 데이트와 비교하기보다는. 따라서 생일이없는 사람들의 목록을 얻으려면 every person whose birth date is missing value
이라고 쓰고 정확하게 말합니다. whose
절은 앞의 목록을 필터링하여 주어진 술어와 일치하는 값만 포함합니다. 그런 다음 add
인라인을 만드는 새 그룹에 나열합니다. 마지막으로 save addressbook
은 변경 사항을 저장하고 표시합니다.
그러나이 경우 AppleScript가 전혀 필요하지 않습니다. 주소록은 스마트 그룹을 지원합니다. 옵션을 만들려면 옵션 - 새 그룹 버튼을 클릭하십시오. 스마트 그룹의 이름으로 "No Birthdays"를 선택하고 두 번째 드롭 다운에서 "생일"(첫 번째 드롭 다운부터)이 설정되지 않은 카드와 일치하도록 지정하십시오. 이것은 생일을 정하지 않은 사람들을 동적으로 업데이트하는 그룹을 제공합니다.
편집 : 그것은 add
레오파드에 대한 목록을 취하면서,이 스노우 레오파드 (Snow Leopard)에하지 않는 것 같다, 그래서 우리가 (너무 레오파드에서 작동) 명시 적 repeat
루프를 사용해야합니다 :
tell application "Address Book"
set noBirthdays to make new group with properties {name:"No Birthday"}
repeat with p in (every person whose birth date is missing value)
add p to noBirthdays
end repeat
save addressbook
end tell
이 방법은 그룹을 미리 만들고 각 항목을 개별적으로 추가하는 것을 제외하고는 위의 해결 방법과 거의 같습니다. 인덱스를 반복하는 것이 아니라 요소를 직접 반복합니다. 여기에서 우리가 신경 쓰는 부분이 전부입니다.
편집 : 다른 속성에 대한 상황이 유사하다; 실제로 스마트 그룹을 사용할 때 상황은 동일합니다. AppleScript 쪽에서 질문은 데이터 형식입니다. 대부분의 슬롯은 설정되지 않은 경우 missing value
이지만, email
은 예외입니다. 테스트를 통해 알 수 있듯이 목록에 저장되므로 every person whose email is {}
이 필요합니다.그러나 email
이 목록이기 때문에 이것은 아마도 - 나를 위해 작동하지 않습니다,하지만 난 아니에요 확실한 그래서 당신은 대신
repeat with p in every person
if email of p is {} then add p to noEmails
end repeat
봐라이 모든 일을해야 할 것입니다.
기업을 제외하고 제외하는 것도 쉽지만 내가 알 수있는 한 주소록에서는 스마트 그룹을 만드는 방법을 제공하지 않습니다. 그러나 관련 속성은 기업의 경우 true
이고 다른 경우는 false
인 company
입니다. 당신이이 조건을 모두 하나 개의 마스터 목록을 원하는 경우에 따라서, 회사가없는 목록을 만들려면
repeat with p in (every person whose company is false)
add p to noCompanies
end repeat
을하고 싶은 두 가지 방법이있다. 첫째, 애플 스크립트에서, 당신은 두 가지 조건 and
을 가지고, 그들은 이메일이 있는지 여부에 에어컨을 추가
repeat with p in (every person whose company is false and ¬
birth date is missing value)
if email of p is {} then add p to masterGroup
end repeat
다른 옵션은 주소록에서이 작업을 수행하는 것입니다. 먼저 AppleScript 방식으로 No Companies
그룹을 만들어야합니다. 그런 다음 "이메일을 설정하지 않았습니다", "생일을 설정하지 않음", "카드가 '회사 없음'의 구성원 인 세 가지 조건 (모두 +
버튼을 사용하여 추가)의 모든 조건에 일치하는 스마트 그룹을 만듭니다. No Companies
그룹에 AppleScript를 사용해야한다는 것은 유감이지만 (이 방법이 있어야하는 것처럼 느껴지지만 그게 무엇인지는 알 수 없습니다.) 불행한 일입니다.
... 오류 메시지는 ....입니까? – FrustratedWithFormsDesigner
나는 그것을 지금 추가했다, 그것이 도움이되기를 바랍니다. –