2010-01-20 5 views
1

현재 FileMaker에서 실행되는 데 AppleScript를 쓰고 있습니다. FileMaker에게 파일 메이커 Pro 또는 FileMaker Pro Advanced와 같은 파일 이름을 알려 주어야합니다. 그러면 파일 메이커 내에서 다른 AppleScript로 말할 수 있습니다.AppleScript와 FileMaker 간의 통신

나는 현재 스크립트 파일이 있습니다. 그러나 응용 프로그램 파일의 이름을 밖으로, 문제는 다시 filemaker에지고있다. 내가 다시 보낼 이름은 AppleScript로 변수에 "FMName는"나는 이것에 대한 문제는 내가 그 응용 프로그램을 알면서도 FMName가있을 것입니다

tell application FMName 
    set cell "gFMName" of current record to FMName 
end tell 

이 옵션

1) 생각할 수 셀 명령을 설정, applescript하지 않습니다 그래서 불평.

2) applescript에서 값 또는 오류 메시지를 반환하고 FileMaker에서이를 받아 들여 유용한 정보를 제공하도록하십시오.

1) Applescript는 숫자 만 반환 할 수 있습니다 (사실입니까?) 2) 오류 대화 상자 또는 기타를 원하지 않습니다. 3) 어떻게 가져올 지 알지 못했습니다. 파일 메이커는이 반환 값을 처음부터 받아들입니다 ...

누구든지이 작업을 수행하는 방법에 대해 더 좋은 아이디어가 있습니까?

감사합니다.

+0

실제로 AppleScript로 얻으려는 것을 알려주십시오. 완전히 다른 (그리고 훨씬 더 나은) 해결책이있을 수 있습니다. – DisplacedAussie

+0

저는 filemaker에서 호출되는 applescript를 작성하고 있습니다. AS가 FM에 값 (또는 값)을 반환하기를 원할 때 우리가 찾은 유일한 방법은 AS 스크립트에 FM을 설정하고 set cell 명령을 호출하는 것입니다. 그래서 FM은 셀을 설정하기 위해 FM을 호출하는 AS를 실행 중입니다. 그것은 바보 같지만 여러 번 번들 이름을 가진 FileMaker Pro 및 FileMaker Pro Advanced와 같은 여러 종류의 FM이있을 때까지 작동합니다 ... 그래서 FM 응용 프로그램의 이름을 알아야합니다. 전화하십시오 ... –

답변

1

응용 프로그램이 대상이 무엇이든 상관없이 FileMaker Pro 또는 FileMaker Pro Advanced 또는 FileMaker의 런타임 버전 (사용되는 사전)에 관계없이 FileMaker 버전이 있습니다. 사용 가능한 동일한 용어. 따라서 using terms from application "FileMaker Pro"을 사용하여 실행하려는 블록을 묶을 수 있습니다.

using terms from application "FileMaker Pro" 
    tell application FMName 
     set cell "gFMName" of current record to FMName 
    end tell 
end using terms from 

실험을하지 않았으므로 작동 여부를 잘 모릅니다. 귀하의 목표는 하나의 FileMaker 응용 프로그램이 다른 FileMaker 응용 프로그램의 AppleScript에서 데이터를 받도록하는 것입니다. 그러나 두 가지 FileMaker 응용 프로그램을 왜 사용하고 있는지 궁금합니다. 다른 버전입니까 (예 : FileMaker 10 및 FileMaker 6)? 그렇다면 AppleScript로 두 번째 FileMaker 응용 프로그램이 가져 오는 파일에 데이터를 쓰게하는 것이 좋습니다. 그러나 FileMaker 7-10 둘 다라면 동일한 응용 프로그램에서 두 파일을 열지 않는 이유는 무엇입니까? 그런 다음 AppleScript의 데이터를 올바른 파일에 직접 쓸 수 있습니다.

+0

아니요, 실제로는 동일한 파일 메이커 응용 프로그램입니다. 정말로 내가하려는 것은 AppleScript가 파일 메이커에게 데이터를 반환하도록하는 것입니다. 우리가 이것을하기 위해 생각해 낸 가장 쉬운 방법은 AS가 값을 셀을 설정하도록 FM에게 알려주는 것입니다. 그리고 FM이 가져 오는 파일에 데이터를 쓰는 것은 실제로 내가 사용하고있는 현재의 전략입니다 ... AS는 FM이 읽는 파일에 응용 프로그램의 이름을 씁니다. 그러나 그것은 다소 혼란 스럽습니다 ... –

+0

Ah, tell 문에 대해 걱정할 필요가 없습니다. AppleScript가 FileMaker에서 Perform AppleScript 스크립트 단계에 포함 된 경우 응용 프로그램을 직접 대상으로하지 않는 문은 AppleScript를 실행하는 FileMaker 응용 프로그램을 대상으로합니다. 위의 예에서 필요한 것은'set cell' 문입니다. 'tell' 문은 불필요합니다. – Chuck

+0

잠깐, 정말? ???? 우수한. 그게 내가 필요한거야! 감사합니다. –

1

이 답변을 받았지만 최근에 발견 한 내용을 추가 할 예정입니다. 다른 앱을 타겟팅하는 경우 Finder에 "Tell telling Finder Activate"라고 말하면 Finder에서 "End Tell"을하거나 명시 적으로 FMP를 가리킬 때까지 해당 FMP 호출이 실패합니다.

이를 "[당신이 파인더 할 필요가 무엇을 적]로 응용 프로그램 찾기에게"같은

나에게 지적 된 솔루션은 하나의 라인에서 아웃 사이드 호출을 할 수 있었다 비 FMP 응용 프로그램에 알려주지 만 FMP에 그대로 두어 FMP 호출이 작동하도록 지시합니다.

런타임 이름이 개발 응용 프로그램 이름과 다를 수 있으므로 런타임에 문제가됩니다.

1

나는이 스레드가 조금 오래되었다는 것을 알고 있지만 여기에 내가하는 일이있다. if 문을 사용한다.파일 메이커의 종류가 실행되고 있는지 확인하기 위해 가져 오기 (ApplicationVersion를) 함수를 사용하여 : 나는 더이 단계 촬영 및 사용자 정의 함수로 설정 한

If (PatternCount (Get (ApplicationVersion) ; "Advanced") ; 
"tell application \"FileMaker Pro Advanced\"" ; 
"tell application \"FileMaker Pro\"" ) 

그래서 그것을 많은 다른 반복이 없습니다 스크립트.