Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Další akce Automatoru
8. června 2005, 00.00 | Dnes budeme pokračovat – bohužel, nejen v přehlídce akcí, ale také v popisu podrazů. Na řadě je skupina Automator; ta obsahuje některé pomocné a řídící akce, jež se hodí do kteréhokoli pracovního postupu. Takřka všechny akce z této skupiny dokáží zpracovat libovolný vstup, a bez jakékoli změny jej zkopírují na svůj výstup.
Minule jsme si začali povídat o akcích Automatoru; seznámili jsme se s akcemi ze skupiny Address Book, a hlavně jsme si ukázali několik "podrazů", s nimiž se tu a tam při práci s Automatorem můžeme setkat (týká se verse současné ve chvíli psaní tohoto textu, tedy 10.4.1).
Skupina Automator
Dnes budeme pokračovat – bohužel, nejen v přehlídce akcí, ale také v popisu podrazů. Na řadě je skupina Automator; ta obsahuje některé pomocné a řídící akce, jež se hodí do kteréhokoli pracovního postupu. Takřka všechny akce z této skupiny dokáží zpracovat libovolný vstup, a bez jakékoli změny jej zkopírují na svůj výstup.
První skupina akcí umožňuje do jisté míry řídit běh pracovních postupů: je zde akce Pause, jež prostě přeruší na chvíli běh postupu, akce Ask for Confirmation, jejímž prostřednictvím může uživatel pracovní postup přerušit, a také akce Wait for User Action, jež je určena k tomu, aby si pracovní postup vyžádal od uživatele nějakou akci (třeba, navážeme-li na akce, jež již známe z minulého dílu, "vyber v Address Booku ty, jimž chceš rozeslat e-mail"), dříve, než bude pracovní postup pokračovat.
Sestavujeme-li složitější pracovní postup, může být k nezaplacení akce View Results, jež zobrazí výsledek minulé akce (a předá jej beze změny akci následující). Nejsme-li si tedy zcela jisti, kde je v pracovním postupu problém, můžeme mezi každé dvě jeho akce vložit akci View Results a sledovat, co se vlastně děje (ale pozor, než se do toho pustíte, čtěte dále!). Jedna malá obtíž spočívá v tom, že akce občas má tendenci zobrazovat výsledky v ne právě nejčitelnějším formátu – následující obrázek to ilustruje na zobrazení souborů a složek; o druhé se zmíníme za chvilku:
Nejzajímavější akce ze skupiny Automator jsou však ty, jejichž jména začínají slůvkem "Run" – ty totiž aspoň teoreticky umožňují v rámci pracovního postupu využít plnou sílu všech služeb a možností, jež Mac OS X nabízí. Zatímco pomocí akce Run Workflow můžeme "pouze" vnořovat akce do sebe a vytvářet tak "podprogramy", akce Run AppleScript a Run Shell Script umožňují spustit libovolný program, napsaný v jazyce AppleScript, nebo jakýkoli řádkový program. Z trochu jiného soudku pak je akce Run Web Service, jež dokáže do pracovního postupu vložit využití některé z webových služeb Internetu.
To je všechno moc hezké, jenže právě ve spouštění shellových skriptů je jeden nepříjemný podraz: Automator sice v zásadě dokáže navzájem převádět data různých typů (a také to dá najevo tím, že klidně "propojí zobáčky" – srovnejte to s případem z minulého článku, kdy různé akce ze skupiny Address Book pracovaly s "na první pohled" vzájemně nekompatibilními daty, "zobáčky" se nepropojily a argumenty se zobrazily červeně), jenže... soubory a složky na text převádí špatně, takže to prostě nefunguje, ani přes standardní vstup (jak ukazuje obrázek), ani prostřednictvím argumentů příkazového řádku (pak samozřejmě namísto příkazu cat použijeme příkaz echo), ačkoli vše se na první pohled zdá být zcela v pořádku:
Řešení existuje, ale není triviální: je nutné do pracovního postupu doplnit explicitně převod souborů a složek na korektní jména. Bylo by možné naprogramovat na to speciální akci v Cocoa, ale jelikož – jak jsme si před chvilkou řekli – Automator dokáže přímo spustit zadaný program v AppleScriptu, je jednodušší pro převod jmen použít právě AppleScript. Odpovídající program vypadá takto:
on run {input, parameters}
set output to {} repeat with i from 1 to length of input set x to item i of input set output to output & {quoted form of POSIX path of x} end repeat return output end run
a pokud jej do pracovního postupu vložíme, vše "zázračně" začne fungovat:
Bohužel pro dnešek s podrazy ještě nekončíme – ten poslední, který si ukážeme, sice nijak neomezuje funkčnost pracovních postupů, ale zato může velmi zákeřně zkomplikovat jejich tvorbu a ladění.
Řekli jsme si před chvílí, že "akce View Results výsledek minulé akce předá beze změny akci následující; můžeme tedy mezi každé dvě akce vložit akci View Results a sledovat, co se vlastně děje"? Inu, zdá se, že to není tak docela pravda: bohužel se musím přiznat, že v tomto případě se mi nepodařilo zjistit, co přesně je příčinou, ale existuje nejméně jedna situace, v níž po vložení akce View Results pracovní postup přestane fungovat!
Speciálně, náš pracovní postup s pomocným AppleScriptem pro převod souborů a složek na korektní jména přestane správně fungovat, vložíme-li akci View Results mezi získání souborů a jejich převod pomocí AppleScriptu – v takovém případě AppleScript vrátí prázdný seznam jmen:
Obsah seriálu (více o seriálu):
- Mac OS X Tiger - Jak na Automator
- Automator a jeho akce
- Nejzajímavější akce Automatoru
- Další akce Automatoru
- Automator: dnes jen akce, žádné podrazy
- Další akce Automatoru
- Automator a pracovní postupy
- Automator: pracovní postupy stokrát jinak
- Automator naposled: pro programátory
- Automator – zdroje
- Leopard zblízka: Automator
- Automator zblízka: Photoshop Action Pack