2016-10-12 8 views
2

연락처 그룹을 조작하기 위해 Automator 용 AppleScript 응용 프로그램을 작성하려고합니다. 스크립트에 대한 입력으로 연락처 항목을 수신하고 있지만 구문 분석 방법에 대해 고민하고 있습니다. 나는 로그에 다음과 같은 얻을AppleScriptObjC에서 NSAppleEventDescriptor 구문 분석

script Labels_for_contact_groups 
    property parent : class "AMBundleAction" 

    on runWithInput_fromAction_error_(input, anAction, errorRef) 
     -- Get parameters 
     set labelName to valueForKey_("trainingLabelName") of parameters() of me 
     set labelValue to valueForKey_("trainingLabelValue") of parameters() of me 

     -- Iterate over the contact groups 
     -- what should I do here? 
     log input 

     return input 
    end runWithInput_fromAction_error_ 
end script 

:

2016-10-12 11:35:28.061 Automator[2167:174553] <NSAppleEventDescriptor: [ 'obj '{ 'want':'azf5', 'form':'ID ', 'seld':'utxt'("50E8C441-3DF0-4CD7-8E36-E175B37D2CCB:ABGroup"), 'from':[0x0,10d10d "Contacts"] } ]> 

내가해야 할 것은 지정된 그룹의 모든 연락처 정보를 추출입니다 여기에 지금까지 작성한 소스입니다. 어떻게해야합니까?

편집 :

[Labels_for_contact_groups runWithInput:fromAction:error:]: Can’t get every «class azf4» of «class ocid» id «data optr0000000080A9220080600000». (error -1728) 

내가 잘못 뭐하는 거지 : 내가 다음 줄 이제 다음과 같은 오류가

tell application "Contacts" to set thePeople to people of input 
repeat with i from 1 to number of items in thePeople 
     set thisPersonCurrent to item i of thePeople 
     log thisPersonCurrent 
end repeat 

을 추가?

+0

제 생각에는 소프트웨어는 응용 프로그램이나 자동화 도구입니다. 둘 다있을 수는 없습니다. – Willeke

+0

'input'은 Automator 동작의 입력이며 그룹 ID "50E8C441-3DF0-4CD7-8E36-E175B37D2CCB : ABGroup"처럼 보입니다. 당신은 그룹 인 것처럼 말할 수 있습니다. – Willeke

+0

이것이 Apple 이벤트 디스크립터에 포함 된 객체 지정자 (일명 '참조')의 모습입니다. 'input as anything '을 사용하여 AppleScript 값으로 되돌려 보았습니까? 내가 모르는 유일한 경우는 참조가 올바른 응용 프로그램 (예 : 현재 응용 프로그램이 아니라 연락처)을 사용하는지 여부뿐입니다.하지만 시도하고보아야합니다. 솔직히 Automator 시스템과 해킹 된 AppleScript 훅 (hookeds)은 아주 멋지다.하지만 독립형 AS 애플릿이나'#!/usr/bin/osascript' 쉘을 쓰는 대신에 그것을 사용하고 싶다고 생각한다. 스크립트.) – foo

답변

0

내가 달성하려고 시도한 것은 Automator에서 작동하지 않았습니다. API에 수많은 차이가 있음을 깨달았습니다. 마침내 작동 한 것은 독립 실행 형 AppleScript로 다음 줄을 사용했습니다.

tell application "Contacts" 
    set theGroupNames to name of groups 
    set text_returnedCurrent to choose from list theGroupNames with prompt "Select Group" without multiple selections allowed 
    set the_peopleCurrent to people of group (text_returnedCurrent as text) 
    ...