AppleScript終極入門手冊(cè)副本_第1頁(yè)
AppleScript終極入門手冊(cè)副本_第2頁(yè)
AppleScript終極入門手冊(cè)副本_第3頁(yè)
AppleScript終極入門手冊(cè)副本_第4頁(yè)
AppleScript終極入門手冊(cè)副本_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

AppleScript是MacOSX內(nèi)置的一種功能強(qiáng)大的腳本語(yǔ)言,使用AppleScript的目的是把一些重復(fù)繁瑣并且耗費(fèi)時(shí)間的任務(wù)自動(dòng)化。比如我是一個(gè)自由職業(yè)者,我十分的討厭每個(gè)星期為不同的客戶去創(chuàng)建帳單,為了解決這個(gè)問(wèn)題我寫(xiě)了一個(gè)AppleScript來(lái)讀取我在iCal里輸入的時(shí)間,然后自動(dòng)在MicrosoftExcel里根據(jù)這些時(shí)間創(chuàng)建出帳單并且自動(dòng)通過(guò)郵件發(fā)送給我的客戶,要完成所有的這一切動(dòng)作只需要輕輕的按一個(gè)按紐。AppleScript的一個(gè)優(yōu)點(diǎn)是你不必是一個(gè)天才程序員才能使用它,事實(shí)上你甚至不需要有任何編程的經(jīng)驗(yàn)!這篇文章會(huì)告訴你如何通過(guò)隱藏在每個(gè)應(yīng)用程序框架里的簡(jiǎn)單指令去為幾乎任何的應(yīng)用程序?qū)懸粋€(gè)AppleScript。感興趣了?那就繼續(xù)讀下去吧?<burtonmum龍屮<Noselectede]emant>;telIBppftc^tfon<burtonmum龍屮<Noselectede]emant>;telIBppftc^tfon"Finder"(3isplaydialog"HelloWorfd"endtellDescriptionEventLo^Eventsft電艸It0oUntitledQ◎Kecord■5topKun CompileRkTkSuTidi&.Cc-rit亡mAppleScriptTheMainWindow從這里開(kāi)始:Tell命令塊要?jiǎng)?chuàng)建一個(gè)AppleScript時(shí),只要打開(kāi)Applications文件夾里的Utilities里面的AppleScriptEditor就可以開(kāi)始了。打開(kāi)后你會(huì)看到上圖類似的窗口這個(gè)是AppleScript編輯器的主窗口,嘗試在里面輸入以下的代碼:

tellapplication"Finder"displaydialog"HelloWorld"endtellAppleScript這種腳本語(yǔ)言本身盡可能使用平實(shí)的英語(yǔ)作為語(yǔ)法來(lái)讓代碼特別容易理解和閱讀。AppleScript的大多數(shù)命令會(huì)位于Tell命令塊內(nèi),它叫“Tell命令塊”是由于你在“告訴”應(yīng)用程序你想它做些什么。比如上面所說(shuō)的三行代碼告訴Finder這個(gè)應(yīng)用程序顯示一個(gè)包含“HelloWorld”字符串的對(duì)話框。當(dāng)你在Tell命令塊內(nèi)寫(xiě)完了你想要應(yīng)用程序做的一個(gè)或多個(gè)命令后你必須要以“endtell”命令來(lái)結(jié)束這個(gè)Tell命令塊。小技巧:初學(xué)者最容易犯的錯(cuò)誤就是忘了最后加上'endtell”來(lái)結(jié)束Tell命令塊,如果把它忘了,腳本將會(huì)編譯失敗。當(dāng)你在編輯器內(nèi)完成輸入上面的代碼后,按下上面的“Compile”鐵錘圖標(biāo)。如果你的語(yǔ)法是正確的話,你所輸入的代碼會(huì)被自動(dòng)格式化并改變顏色。如果你輸入的時(shí)候出現(xiàn)了錯(cuò)誤,當(dāng)你編譯的時(shí)候編輯器會(huì)告訴你哪一塊出錯(cuò)了,并嘗試告訴你它認(rèn)為錯(cuò)誤是什么。下面是編輯器默認(rèn)的一些顏色分別代表什么,你可以在菜單欄的AppleScriptEditor->Preferences里看到并修改?!?riTiitl:-ngNewtext(u.Li€ompil&dj匚ourierVerdanaDpe=rators,etc.(+&JVerdanaBoldLanguasekeywordsVerdanaApplicationkeywordsVerdanaCommentsVerdanaValues(numbers^data)VerdanaVarisblesandsubroutinenamesVerdanaStringsVerdanaBoldCominandnamesVerdanaParameternamesClassesVerdanaPr&p&rtfesVerdana「3riTiitl:-ngNewtext(u.Li€ompil&dj匚ourierVerdanaDpe=rators,etc.(+&JVerdanaBoldLanguasekeywordsVerdanaApplicationkeywordsVerdanaCommentsVerdanaValues(numbers^data)VerdanaVarisblesandsubroutinenamesVerdanaStringsVerdanaBoldCominandnamesVerdanaParameternamesClassesVerdanaPr&p&rtfesVerdanaEnumeratedvaluerUegDefauIts''HistoryPlug-insVerdanaItalicSyntaxColor你的代碼成功編譯后,再按“Run”圖標(biāo),你應(yīng)該會(huì)看到以下的對(duì)話框:HelloWorld現(xiàn)在按下“OK”按紐并且看一下編輯器下方。當(dāng)你運(yùn)行一腳本時(shí),編輯器會(huì)告訴你運(yùn)行的結(jié)果是什么,或者什么被“返回”了,在我們的例子里,它告訴我們“OD”按紐被按下了。聲明變量變量在每一種編程語(yǔ)言里面的意義都是一樣的,程序代碼利用變量方便的對(duì)許多信息進(jìn)行讀取或運(yùn)算。但在每一種語(yǔ)言里創(chuàng)建或“聲明”變量是不同的,在AppleScript里你會(huì)像下面這樣聲明變量:settheStringto"HelloWorld"tellapplication"Finder"displaydialogtheStringendtell上面的例子中有幾處地方需要注意。首先,我們注意到變量的聲明是通過(guò)“set”和“to”命令來(lái)進(jìn)行。在例子中我們“set”了我們的變量(“theString”)為一個(gè)值(“HelloWorld”)。在很多編程語(yǔ)言里程序員被要求必須聲明變量的類型(如整型、浮點(diǎn)型、字符串等等),但AppleScript足夠的聰明而不需要程序員聲明類型。另外,請(qǐng)注意我是如何對(duì)變量命名的。你不能在變量名中間加空格,所以最好使用駝峰型(theString)或下劃線型(the_string)變量命名方法。使用哪一種命名方法并不重要,但在你所寫(xiě)的程序中最好保持統(tǒng)一的命名方法。當(dāng)你讀其他人寫(xiě)的代碼時(shí),你一定會(huì)很討厭看到類似“myVariable”這樣的變量名,因?yàn)槟銖淖兞棵细究床怀鲞@個(gè)變量是用來(lái)存什么的。最后,我們注意到把“HelloWorld”放進(jìn)了變量中,我可以在代碼里一遍又一遍的引用這個(gè)變更。如果后面我決定要把“HelloWorld”改成“GoodMorningDave”,我只需要在聲明變量的那一行進(jìn)行修改就可以了。使用變量你可以盡情的使用變量來(lái)做各種瘋狂的事,但鑒于這是一篇入門文章,我只會(huì)告訴你幾種方法,輸入下面的代碼:--IntegerVariablessettheFirstNumberto3setthetheSecondNumberto2--VariableOperationssettheAnswerto(theFirstNumber+theSecondNumber)settheAnswerto(theAnswer+1)--StringVariablessettheStringto"3+2+1="--DisplayDialogtellapplication"Finder"displaydialogtheString&theAnswerendtell當(dāng)你的腳本變得越來(lái)越復(fù)雜,你就需要好好的組織一下你的腳本了。在一行代碼前加上兩個(gè)”-”號(hào),代表這一行是注釋,你可以使用注釋來(lái)隔開(kāi)和解釋你的代碼方便以后閱讀。在上面的例子里,我創(chuàng)建了一個(gè)字符變量和幾個(gè)整數(shù)變量。你可以對(duì)變量進(jìn)行數(shù)學(xué)運(yùn)算,在這里我把“theFirstNumber”設(shè)為3,“theSecondNumber”設(shè)為2,然后把他們相加并賦值給“theAnswer”變量。另外,你可以在變量創(chuàng)建后改變變量的值。在“theFirstNumber”和“theSecondNumber”相加并把結(jié)果賦值給“theAnswer”(結(jié)果為5)后,我馬上把“theAnswer”自己加1(結(jié)果為6)。如果你運(yùn)行這個(gè)腳本,你應(yīng)該會(huì)看到以下的結(jié)果:

BasicMath這只是一個(gè)很簡(jiǎn)單的范例,示范你可以對(duì)變量做的一些操作。你現(xiàn)在應(yīng)該明白變量的值并不是不變的,一門編程語(yǔ)言的強(qiáng)大在于你能通過(guò)對(duì)變量的操作完成各種各樣的任務(wù)。重中之重:AppleScript字典雖然AppleScript本身自帶有大量可以作用于Mac系統(tǒng)中任何程序的指令,但應(yīng)用程序的作者還是有責(zé)任針對(duì)他的應(yīng)用添加AppleScript的全面支持。換句話說(shuō),開(kāi)發(fā)者必須編寫(xiě)一個(gè)他的程序如何與系統(tǒng)里其他程序進(jìn)行通訊的手冊(cè),這些手冊(cè)被稱之為“字典”。要打開(kāi)字典,在AppleScriptEditor選擇菜單File->OpenDictionary(或快捷鍵Shift-Command-0)。例如在打開(kāi)的字典里向下瀏覽,找到程序Mail然后按“Choose”,你應(yīng)該會(huì)看到以下的窗口:Back/Forward〔總a![?昌畫(huà)宮:HText5zeViewPrintBack/Forward〔總a![?昌畫(huà)宮:HText5zeViewPrintTermjiiolcgySearchCommcmcla!>5esandcommandsformostepprcations.StandardSuiteopenv:Openanobject.openspecifier:listofobjectstoopenprintv:Printanobject.print:spoeffier:fietofobjectstopnntQuit7:Quitanapplication.quiit[sawingyes/no/ask].SpecifieswhetherchangesshouldbesavedbeFore-quitting.closev:Closeanobject,日□就specifier:theobjecttoclose[savingyes/no/ask]:Specifieswhetherchangesshouldbesavedbeforeclosing?[savingirtFile]:TheFileinwhichtosavetheobject.MailDictionary在左邊的列中包含了指令和物件的“套件”。當(dāng)你選擇了一個(gè)套件,你會(huì)在下面的顯示窗中看到此套件所包含的所有東西。你可以通過(guò)點(diǎn)擊第二列及第三列里的命令來(lái)縮小預(yù)覽的范圍。套件包含了“指令”(圓形的C圖標(biāo))和“類”(方形的C圖標(biāo)),而“類”包含了“屬性”(P圖標(biāo))和“元素”(E圖標(biāo))。要理解這些東西怎么工作在一起,最好的方法就是用字典來(lái)寫(xiě)一個(gè)腳本范例。首先我們需要一個(gè)算法,其實(shí)算法只是“我們需要寫(xiě)下腳本如何工作”的一個(gè)高端叫法。我們希望創(chuàng)建一個(gè)腳本去編寫(xiě)和發(fā)送郵件。我們會(huì)使用到變量來(lái)令到將來(lái)改變郵件內(nèi)容和送件人變得容易一點(diǎn)。在我們寫(xiě)下算法的時(shí)候,我們要時(shí)刻記住AppleScript是如何工作的,這些步驟是我得出來(lái)的:為收件人名字、收件人郵件地址、郵件標(biāo)題以及郵件文本等創(chuàng)建變量創(chuàng)建新郵件的變量,同時(shí)指定郵件信息的屬性。創(chuàng)建一個(gè)新的郵件發(fā)送這個(gè)新郵件創(chuàng)建簡(jiǎn)單的變量我們從上文已經(jīng)了解到如何創(chuàng)建儲(chǔ)存文本的變量,所以我們?cè)谶@一步還用不到字典。下面是代碼:--VariablessetrecipientNameto"JohnDoe"setrecipientAddressto"nobody@"settheSubjectto"AppleScriptAutomatedEmail"settheContentto"ThisemailwascreatedandsentusingAppleScript!"如你所見(jiàn),我們只是隨便放了一些假的數(shù)據(jù)到這四個(gè)變量中,它們分別是收件人名字、收件人郵件地址、郵件標(biāo)題和郵件正文文本。這些變量里面的內(nèi)容你喜歡改成什么都可以,但我建議你把你自己的郵件地址放到收件人郵件地址變量中,這樣我們測(cè)試腳本的時(shí)候就可以通過(guò)查自己的郵箱看腳本是否發(fā)送郵件成功。使用Mail字典來(lái)創(chuàng)建郵件變量由于我們完全不知道怎么告訴Mail去創(chuàng)建一個(gè)新的郵件信息,所以我們必須借助于AppleScript字典。如果你點(diǎn)擊一下“StandardSuite”你會(huì)看到一些AppleScript自帶的公共標(biāo)準(zhǔn)命令。由于我們是要“創(chuàng)建”一個(gè)新的郵件信息我們通過(guò)向下瀏覽來(lái)找到相關(guān)的命令,你會(huì)發(fā)現(xiàn)里面沒(méi)有“create”這個(gè)命令但在向下滑到差不多中間的部分你會(huì)找到“make”這個(gè)命令。聽(tīng)起來(lái)貌似不錯(cuò),所以創(chuàng)建一個(gè)新的郵件系統(tǒng),其實(shí)是要告訴AppleScript我們要“make”一些東西。接下來(lái)點(diǎn)擊最左列的“Mail”套件。我們剛才已經(jīng)找到動(dòng)作是“make”,所以在這里我們跳過(guò)所有“指令”(動(dòng)詞)不看,直接翻到下面的“類”(名詞)中。我們第一個(gè)看到的類是“outgoingmessage”,太好了這就是我們要的,因?yàn)槲覀兙褪且l(fā)出一個(gè)新的郵件信息。接著點(diǎn)擊“outgoingmessage”類然后看下面顯示的屬性說(shuō)明。我們需要把第一步創(chuàng)建的幾個(gè)簡(jiǎn)單變量插入到新郵件變量中。但在下面的“outgoingmessage”屬性列表中,我們只找到郵件標(biāo)題和內(nèi)容的屬性,而沒(méi)看到收件人相關(guān)的屬性?,F(xiàn)在我們知道引用這些屬性的正確語(yǔ)法了。注意,字典告訴你的是屬性的定義格式。比如subject這個(gè)屬性,我們定義的方法是“subject:你想打的標(biāo)題字樣”。g)MailCDF」g)MailCDF」[A"昌囲電5r^nnncjlcgyBack/Forw^rdTextSize View PrintSearchbcciecipieiutcrecipient_reclpienitarecipientJ迸.sender「Bubjed審 匚ontent5ianda.rijSuiteText5uiteMallEynthmruaeQapplicationlmessage■viewerQsignaiiireoutgoingmessagenlinh.item]:A門總用emailmessageE-EZENT5contains r?ciDi?nt:占』ocrMDiont魚(yú)rotiDiEFtmtoreeipiferts;containedby門測(cè)沁飾?P^OPERTIEasender(text):rnesenuerorthemessagesubject(text):ThesubjectoFthem&issagecontent[text}:Thecontentsorthemessdgevisible,(boolean}:Controlswhetherthe windev^isshownonthes^r&en.Thed&Faultisfalsemessagesignature(signakure}:ThesignaLureofthem&55ageid(integer,r/o}:Theuniqueicfentifierofthem&ssaaeoutgoingmessage同樣你會(huì)在套件中找到一個(gè)叫“send”的指令,我們會(huì)使用這個(gè)指令來(lái)發(fā)送郵件?,F(xiàn)在我們還需要知道正確表達(dá)收件人名字和收件人郵箱地址的語(yǔ)法。由于不在這個(gè)套件中,我們點(diǎn)擊“Message”套件。向下瀏覽到差不多一半的時(shí)候我們找到“receipient”這個(gè)類,點(diǎn)擊這個(gè)類會(huì)看到他的屬性列表,同樣我們可以通過(guò)簡(jiǎn)單的英文來(lái)引用這個(gè)類的屬性,它的屬性包括“name”和“address”。小技巧:你可以使用字典窗右上角的搜索欄快速的搜索你需要的類或?qū)傩缘取,F(xiàn)在我們已經(jīng)準(zhǔn)備好用上面學(xué)到的語(yǔ)法來(lái)創(chuàng)建我們的郵件信息了,代碼如下:--VariablessetrecipientNameto"JohnDoe"setrecipientAddressto"nobody@"settheSubjectto"AppleScriptAutomatedEmail"settheContentto"ThisemailwascreatedandsentusingAppleScript!"--MailTellBlocktellapplication"Mail"--CreatethemessagesettheMessagetomakenewoutgoingmessagewithproperties{subject:theSubject,content:theContent,visible:true}endtell注意我創(chuàng)建了一個(gè)tell命令塊來(lái)包住所有發(fā)送給Mail應(yīng)用程序的命令。然后我創(chuàng)建了一個(gè)變量(theMessage)并讓他去“make"—個(gè)新的“outgoingmessage”而且指定上面說(shuō)到的它的屬性。需要注意的是屬性組需要用{}來(lái)包住,每個(gè)屬性間用逗號(hào)分隔。(Jay注:會(huì)編程的朋友可以把“makenewoutgoingmessage”理解成創(chuàng)建一個(gè)“outgoingmessage”類的實(shí)例,然后把實(shí)例賦值給theMessage。如有不對(duì)請(qǐng)指正)第一步:設(shè)置收件人和發(fā)送郵件我們上面創(chuàng)建了郵件的變量,我們現(xiàn)在會(huì)使用另一個(gè)tell命令塊來(lái)讓這個(gè)變量設(shè)置好收件人信息并且進(jìn)行發(fā)送,代碼如下:--VariablessetrecipientNameto"JohnDoe"setrecipientAddressto"nobody@"settheSubjectto"AppleScriptAutomatedEmail"settheContentto"ThisemailwascreatedandsentusingAppleScript!"--MailTellBlocktellapplication"Mail"--CreatethemessagesettheMessagetomakenewoutgoingmessagewithproperties{subject:theSubject,content:theContent,visible:true}--SetarecipienttelltheMessagemakenewtorecipientwithprope

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論