2011-06-10 3 views
2

선택한 텍스트의 여러 탭을 입력으로 여는 자동화 작업을 시도하는 동안 잠시 동안 해결할 수없는 AppleScript 문제가 발생했습니다. 여기에는 대답이 포함되어 있으며 여기에는 "모든 응용 프로그램"자동화 작업에서 선택된 "텍스트"를받는 "입력"에서 데이터를 처리하는 방법에 대한 설명서를 찾을 수 없어서 여기에 게시됩니다. 이미 목록으로 나타납니다. applescript가있는 자동화에서 선택한 텍스트의 목록 처리

에 AppleScript로 동작을 넣어

, 당신은 얻을 :

on run {input, parameters} 

문제는 여기 입력 목록 형식이 아닌이며 스크립트를 중단하거나 오류가 발생하여 어떤 일을하려고한다는 것입니다. 즉, 할 수 없습니다.

 repeat with URL in input 
     set this_URL to URL 

그럼 어떻게 선택한 텍스트 목록을 항목 목록으로 처리 할 수 ​​있습니까?

답변

3

솔루션은 먼저 문자열로 입력을 처리 한 다음 모든 단락을 분리합니다.

on run {input, parameters} 

set inputText to input as string 
set URL_list to every paragraph of inputText 

"모든 단락"을 수행하기 전에 "문자열로"입력을 먼저 처리하지 않으면 작동하지 않습니다.

마지막 작업 스크립트는 "some_url"을 자신의 것으로 대체하십시오. 편집기에서 여러 줄의 텍스트를 선택하고 각각을 새 사파리 탭에있는 고정 된 URL에 대한 매개 변수로 처리 할 수 ​​있습니다. 이것은 각 행을 url의 여러 매개 변수에 대해 구분하도록함으로써 확장 될 수 있습니다. 예를 들어

on run {input, parameters} 

set inputText to input as string 
set URL_list to every paragraph of inputText 
tell application "Safari" 
    activate 
    repeat with URL in URL_list 
     set this_URL to URL 
     # extra processing of URL could be done here for multiple params 
     my new_tab() 
     set tab_URL to "http://some_url.com?data=" & this_URL 
     set the URL of document 1 to tab_URL 
    end repeat 
end tell 
return input 
end run 

on new_tab() 
    tell application "Safari" to activate 
    tell application "System Events" 
     tell process "Safari" 
      click menu item "New Tab" of ¬ 
       menu "File" of menu bar 1 
     end tell 
    end tell 
end new_tab 

당신이 목록을했고
6318162 
6318163 
6318164 

당신이 지금 클릭 선택할 수 this_URL

"http://stackoverflow.com/posts/"&를 사용하여 위의 서비스를했다라고 서비스를 선택하고 "StackOverflow -보기 질문"서비스를 선택하면 각 사파리를 새 사파리 탭에 추가하고 열 것입니다. 필자의 경우, 서버에있는 여러 개의 DNS 항목을 여전히 유효하게 확인하고 많은 whois 조회를 수행해야했습니다.

+1

합니다. 첫 번째 코드 예제에서 'inputText as string'의 모든 단락에 URL_list 설정 '에 두 줄을 결합 할 수 있습니까? – nekomatic

1

(오래된 게시물을 깨우는 것에 대해 사과합니다.) Automator에서 AppleScript 로의 입력과 동일한 파일을 찾고있었습니다. ddowns 트릭은 작동하지만,이를 사용하여 결국, 그것이 내가 우연히 같은 문제를 해결하기 위해 찾고있는 누군가를 위해 도움이 희망하지 않은 : 당신은 해결책을 발견 다행

on run {input, parameters} 

    -- create empty list 
    set selectedFiles to {} 

    -- add each list item to the empty list 
    repeat with i in input 
     copy (POSIX path of i) to end of selectedFiles 
    end repeat 

    -- show each item (just for testing purposes of course) 
    repeat with currentFile in selectedFiles 
     display dialog currentFile as text 
    end repeat 

end run