2013-07-03 64 views
0

我正在使用Automator來編寫一個應用程序(我是一個完全新手,編程時只有一些非常基本的理解),它會給用戶一個提示,在兩個不同的應用程序之間進行選擇。到目前爲止,我有這個,這是我在不同的崗位上發現這個網站如何選擇要打開的兩個應用程序? (Automator)

on run 
choose from list {"Old", "New"} with prompt "Choose which launcher you want to use" without multiple selections allowed and empty selection allowed 
return the result as string 
end run 

當用戶選擇兩個選項之一,並打「OK」,這個想法是對相應的應用程序打開。但是,我不知道如何讓應用程序讀取選擇哪個選項並打開相應的應用程序。這甚至可以從Automator內?

回答

1

我相信下面的代碼會做你想做的事情。我列出了三個應用程序,其中兩個可能有:「日曆」(以前稱爲「iCal」)和「聯繫人」(以前稱爲「地址簿」),以及第三個名爲「Web編輯器」的應用程序,我們走來與Mac,但我想測試這個腳本的應用程序在其名稱中的空格。

on run 
    choose from list {"Calendar", "Contacts", "Web Editor"} with prompt "Choose which launcher you want to use" without multiple selections allowed and empty selection allowed 
    if result is equal to false then 
     error -128 
    else 
     # convert the list return from choose list to a single string 
     set app_name to result as string 
     # run the selected app 
     tell application app_name 
      launch 
      activate 
     end tell 
     return app_name 
    end if 
end run 

# the following line of code cancels the rest of the workflow when the user clicks the "Cancel" button 
error -128 

我相信你雖然是錯過了什麼是你有你的「運行AppleScript」行動回報應用程序的名稱這將它傳遞給工作流中的下一個動作

return the result as string 

你需要做的是在一個變量來捕捉所選應用程序的名稱如下:

# convert the list returned from the "choose list" command to be a single string 
set app_name to result as string 

一旦你在一個變量具有應用程序的名字,那麼你可以按如下方式打開應用程序使用它:

tell application app_name 
    launch 
    activate 
end tell 

我不知道該回什麼樣的價值。您在AppleScript中返回的內容將傳遞到此工作流程中的下一個Automator操作。對我來說唯一有意義的是傳遞選定的應用程序名稱。

return app_name 

我們既可以返回,或通常作爲一個動作的輸出通過另一件事是自己的輸入:

return input 

你得有「輸入」定義如它是當你創建一個新的運行AppleScript動作:

on run {input, parameters} 
    return input 
end run 

上述腳本只是將它的輸入視爲輸出,並沒有做任何事情,但是這僅僅是一個起點。

我在網上做一個在線教程,我可以使用你的幫助。我需要那些新編程的人,他們會把我正在編寫的教程放在一起,我會免費協助您,只要您在我的網站上給我反饋。如果你有興趣,你可以訪問我的網站和/或給我發一封電子郵件。

Beginning Mac Automation and Programming

[email protected]

+0

好的,謝謝!我會試試看看它是否有效! – user2547859

+0

@Kaydell我想知道你爲什麼同時啓動和激活。並意識到,我可以發誓的是隻使用啓動啓動應用程序,所以它不會成爲最前面或啓動應用程序,以便它確實成爲最前面的舊行爲不是目前的行爲。他們兩人都自己打開應用程序,所以它不會成爲最前線。並一起將應用程序帶到最前面。可能是錯誤,年老或新的行爲。 – markhunte

+0

@markhunte我不能說我明白了。這正是我必須做的,讓應用第二次出現在被腳本激活並且隨後運行該腳本後,我必須同時啓動和激活才能擁有這些應用在前面展示他們的窗戶。 – Kaydell

相關問題