Prohledat tento blog

čtvrtek 20. května 2010

GTD v Outlooku - Jak na projekty

Seriál GTD v Outlooku mne v mnohém inspiroval a spoustu věcí, v něm popsaných, jsem nasadil i u sebe (momentálně Outlook 2010 s Exchangem). Taky jsem si přečetl knížku Davida Allena a přemýšlel, jak v Outlooku pracovat s projekty. S úkoly, u kterých již při jejich prvním zadání vím a dokážu předvídat celou řadu dalších kroků včetně jejich kontextů.

Ze začátku jsem si nemyslel, že by mne tato otázka měla nějak zvlášť znepokojovat, vycházel jsem z „tradičního pojetí“ projektů a říkal jsem si, tohle se mně zas tak moc netýká. Jenže takových projektů začalo přibývat a přibývat a já hledal nějaký příjemný způsob jak se postupně přepínat na další a další kroky a automaticky měnit jejich kontexty.

Cíl:Nastavit Oulook tak, abych mohl u úkolu (projektu) jedním kliknutím přejít na již dříve definovaný další krok a změnit i jeho kontext a dále abych mohl úkol (projekt) dále větvit na paralelní a nezávislé podprojekty.

Na začátku je myšlenka

Jak na to? Ještě že má Outlook a vlastně celý Office vývojový systém Visual Basic for Applications. S ním se dá zvládnout vcelku dost věcí. Tedy i projekty. Na začátku však musí být myšlenka. Jak tedy budu v Outlooku reprezentovat projekty?

Projekt v Outlooku je v mém pojetí standardní úkol (Task Item), v jehož textu jsou definovány všechny jeho další kroky a kontexty. Aby těmto informacím Outlook (resp. skript ve Visual Basic) rozuměl, je třeba dodržet několik pravidel:

  1. Pokud je úkol považován za projekt, je na prvním řádku textu zapsán znak @ (zavináč), za tímto znakem může být zapsán název projektu, který se ukládá do uživatelského pole "Projekt".
  2. Následuje seznam dalších kroků. Každý další krok může být obohacen i o jeho kontext a datum zahájení. Další krok, kontext a datum zahájení jsou od sebe odděleny středníkem (;). Datum je možné zadat i relativně (například "Tomorrow", "Next Week", předpokládám, že v české verzi Outlooku budou tyto relativní zápisy fungovat v češtině). Relativní datumy jsou počítány od aktuálního data, takže když jako datum zahájení dalšího kroku zadáte "Next Week" bude jako datum zahájení nastaven následující týden ode dne dokončení předchozího dalšího kroku;
  3. Seznam dalších kroků je ukončen opět znakem @ (zavináč).

Více ukáže příklad:

Za takto strukturovaným popisem projektu může následovat jakýkoli další krok, který bude při zpracování ignorován. Pokud v nastavení (konstanta cIsAllowedWriteBody) povolíte skriptu uložit skriptem změněné tělo zprávy zpět (například chcete zapisovat datum dokončení jednotlivých dalších kroků), pak v těchto případech není možné používat RTF či HTML formátování (resp. možné to je, ale skript vždy veškeré formátování odstraní a ponechá prostý text). Vkládat přílohy je možné vždy.

Kromě názvu projektu (název úkolu) nám tak přibyla další informace – název dalšího kroku. A teď kam s ním. K tomuto účelu se ideálně hodí položka „příznak“ – tedy text, který patří ke každé „vlaječce“ (příznak pro zpracování). Obě položky se pak dají jednoduše zobrazit ve stadnardním tabulkovém zobrazení Úkolů. Může to vypadat třeba takto:

Jak to všechno funguje

Všechno rozhýbe několik vzájemně propojených funkcí a procedur jazyka Visual Basic for Applications. Za všechny teď jmenuju to základní, která všechno spouští DoNextStep. Postačí si upravit panel nástrojů Rychlý přístup nebo Pás karet (v Office 2010 už to jde) a vybrat si to správné makro ze seznamu. Pás karet (či panel nástrojů rychlý přístup) je nutné upravit jak v hlavním okně Outlooku (Explorer), tak v okně s otevřeným úkolem.

Vytvoření projektu

Vytvoříme nový úkol (new task) kliknutím na ikonku na pásu karet a nebo klávesovou zkratkou „Ctrl‑Shift‑K“. Vyplníme všechny potřebné položky včetně strukturovaného zápisu dalších kroků. Nakonec klikneme na ikonu, které jsme přiřadili dříve zmíněné makro DoNextStep, na obrázku výše jsem toto tlačítko označil.

Co se stane

Makro DoNextStep provede tyto kroky:

  1. Zjistí, jestli je v textu úkolu na prvním místě znak zavináč (@). Pokud ne, tak už se s námi nebaví a pokud ano, tak do uživatelského pole "Projekt" přiřadí název projektu - název projektu je text zapsaný za znakem "@";
  2. Ze strukturovaného zápisu přečte první (nebo další následující) další krok a uloží jej do pole „Příznak“ (Follow Up Flag). Taky k úkolu přiřadí jeho kontext (kategorii), resp. odstraní předchozí kontext a zadá nový;
  3. Ke každému dokončenému dalšímu kroku může být zapsán údaj o datu jeho dokončení (je nutné povolit v nastavení skriptu - konstanta cIsAllowedWriteBody, v tom případě skript není schopen zachovat formátování RTF);
  4. Když je k úkolu přiřazen kontext „ČEKÁM NA“, změní stav úkolu na „Čeká se na někoho dalšího“ (Waiting on someone else), v opačném případě (s výjimkou prvního dalšího kroku, kdy je stav nezměněn) je stav nastaven na „Probíhá“ (In Progress);
  5. Když je k úkolu přiřazen kontext „NĚKDY/MOŽNÁ“, změní stav úkolu na „Odloženo“;
  6. Na první řádek, za znak @, zapíše pořadové číslo aktuálního dalšího kroku;
  7. Když se jedná o poslední další krok, odstraní všechny zadané kategorie a označí úkol jako splněný.

V Outlooku mám kontexty (kategorie) obohacené o „prefix“ (hvězdička, zavináč, podtržítko, apod.), aby se lépe řadily. A protože jsem tvor zapomětlivý, nepamatuji si, kde jsem jaký prefix napsal. Skript to naštěstí řeší za mne. Automaticky přiřadí úkolu kategorii ve správné podobě.

Informace o aktuálním Dalším kroku se ukládá do uživatelského pole (UserProperty) s názvem "ActiveNextStep".

Informace o aktuálním názvu projektu se ukládá do uživatelského pole (UserProperty) s názvem "Projekt". Změnu názvuj projektu je možné zajistit pomocí funkce "ChangeProjectName". Ta vyvolá dialogové okno, ze kterého je možné změnit nebo smazat toto uživatelské pole.

Co když potřebuji některé dílčí kroky vykonávat paralelně

Skutečně čas od času nastává situace, kdy potřebuji, aby se jeden projekt obsahující sekvenci dalších kroků větvil na další podprojekty. Druhá verze skriptu myslí i na tuto záležitost. Stačí, když se do seznamu dalších kroků vloží instrukce pro vytvoření další paralelní větve projektu - podprojektu.

Informace o podprojektu jsou jako ostatní informace uvedené na samostatných řádcích kdy první řádek podprojektu začíná znakem ">", který následuje název podprojektu (pozor, pokud zapomenete název podprojektu uvést, skript tento řádek vyhodnotí jako ukončení informací o podprojektu). Název podprojektu je možné doplnit o požadovaný termín dokončení. Na dalších řádcích jsou další kroky podprojektu a jejich kontext (opět odděleno středníkem). Informace o podprojektu jsou pak ukončeny znakem ">" (tentokrát řádek musí obsahovat pouze tento jeden znak). Za sebou je možné uvést i více podprojektů, přičemž postačí, když je znakem ">" ukončen pouze poslední podprojekt. Vše může vypadat třeba takto:

@
Další krok 1;KONTEXT
Další krok 2;KONTEXT

>Podprojekt A;15.6.2010
Krok 1 podprojektu A;KONTEXT;Next Week
Krok 2 podprojektu A;KONTEXT

>Podprojekt B
Krok 1 podprojektu B;KONTEXT
Krok 2 podprojektu B;KONTEXT
>

Další krok 3;KONTEXT
Další krok 4;KONTEXT

>Podprojekt C
Krok 1 podprojektu C;KONTEXT
Krok 2 podprojektu C;KONTEXT
>

Další krok 5;KONTEXT
Ověření splnění podprojektů;KONTEXT
@

Pro lepší orientaci je možné (nikoli však nutné) jednotlivé řádky oddělovat volnými řádky (skript je bude ignorovat).

Jak se skript bude chovat v tomto konkrétním případě? Postupně bude přeskakovat mezi jednotlivými dalšími kroky. Když narazí na první "zarážku" podprojektu, vytvoří samostatný úkol "Podprojekt A" a rovněž "Podprojekt B", současně také přejde na "Další krok 3" (a čeká na jeho splnění). Vytvořené podprojekty si již žijí vlastním životem a nejsou s rodičovským projektem nijak svázány. Jakmile je splněn "Další krok 4", je vytvořen "Podprojekt C" a původní projekt je nastaven na "Další krok 5"... A tak to může pokračovat dál a dál.

Co když se potřebuji v rámci projektu "vrátit zpět"

Co když se potřebuji vrátit o některé kroky zpět? Zkrátka nastavit jiný aktuální Další krok? Pro tento případ je zde připraveno makro ChangeActiveNextStep. Stačí jen přiřadit toto makro do pásu karet nebo na panel nástrojů Rychlý přístup okna "Úkol" a máte vystaráno. Pozor, toto makro funguje pouze tehdy, pokud je tento úkol otevřen v samostatném okně!

Odkládání úkolů

Makro DoTomorrowPostpone umožní jediné. Do položky "datum zahájení” úkolu nastaví zítřejší datum, ale současně zachová původně nastavený termín splnění úkolu. Pokud je úkolu v prodlení, pak (po dotazu) povolí prodloužení i “termínu splnění”. I pro toto makro je užitečné vyhradit si v pásu karet samostatné tlačítko.

Bonusy navíc

Kromě projektů je skript schopen obsloužit jednoduché úkoly – další kroky. Když do prvního řádku textu úkolu zapíšete text ve tvaru:

#Název dalšího kroku;KONTEXT
a stisknete tlačítko s makrem DoNextStep, přiřadí se úkolu název dalšího kroku (do položky „Příznak“) a zadaný kontext.

A na závěr, některé okna Outlooku neumožňují přiřadit položce kategorii. Prostě v pásu karet tato možnost chybí. V jednom z předchozích příspěvků o Outlooku na Mít vše hotovo se tento problém řešil úpravou panelu nástrojů Rychlý přístup a jednoúčelovými makry pro každou kategorii zvlášť. Je to však možné řešit i elegantněji – vyvoláním dialogového okna Všechny kategorie. K tomuto účelu je k dispozici jednoduché makro CategorizeDialog. Přiřaďte toto makro do pásu karet nebo na panel nástrojů Rychlý přístup okna „Zpráva“ a máte vystaráno.

Sledování projektů a s nimi souvisejících informací

Malé projekty se dokáží vměstnat pouze do jediného úkolu a jsou řízeny seznamem vzájemně navazujících dalších kroků. Ale u rozsáhlejších projektů už občas nastává problém, zajistit všechny potřebné a související informace pohromadě. Proto je možné do vybraných úkolů i poštovních zprávu ukládat informaci o názvu projektu. Pak už není problém vytvořit si v Outlooku vlastní pohled, který zobrazuje všechny nedokončené úkoly (a poštovní zprávy jako úkoly označené), které obsahují uživatelské pole "Projekt". Podle tohoto projektu se pak tyto záznamy seskupí a přehled o jednotlivých součástech projektu je na světě.

Kdo by si nevěděl rady, jak na seskupení, tak vše se provede prostřednictvím "Nastavení zobrazení" a její položky "Seskupit podle..."

Jako malý pomocník při zadávání informace o názvu projektu slouží makro ChangeProjectName, které umí (v okně, které si samo zobrazí) několik věcí. Jednak přiřadit název projektu ke zprávě nebo úkolu. Dokáže tuto informaci také změnit a rovněž smazat. Jako poslední věc, kterou jsme toto makro naučil je vytvořit nový úkol, který má přiřazený stejný název projektu jako aktuální zpráva. Tato funkce se mi hodí zejména v okamžiku, když dorazí e-mail, na základě kterého potřebuji vytvořit "projekt" a do něj si psát potřebné "další kroky". Do zprávy se tyto informace dávají velmi špatně.

Jak to všechno zařídit, když neumím programovat

Celý skript se můžete stáhnout (kdo se v tom umí vrtat, tak třeba i upravit) a naimportovat do Outlooku.

Jak na to

Spusťte vývojové prostředí Visual Basic for Applications, klávesovou zkratkou Alt-F11 nebo ikonou Visual Basic na pásu karet Vývojář. Klikněte pravým tlačítkem na položce „Modules“, vyberte položku „Import File“ a importujte soubor GTD.BAS, fProjectName.frm, fProjectName.frx, cProjectName.cls a mProjectName.bas který jste si stáhli do počítače. Aby všechna makra běhala bez problémů, je nutné je digitálně podepsat. A to už bylo řešeno v jednom z předchozích příspěvků „GTD v Outlooku jednoduše a prakticky – díl VII.

Čtveřice souborů fProjectName.frm, fProjectName.frx, cProjectName.cls a mProjectName.bas jsou schopny fungovat samostatně. Pak zajišťují pouze funkci makra ChangeProjectName.

Makra a integrace do Outlooku

Celá "aplikace" (slovo aplikace se nedá asi použít v pravém slova smyslu, protože přeci jen uživatel musí spoustu věcí při zprovoznění celku udělat sám a určitá uživatelská zběhlost je zde na místě) obsahuje několik maker, které jsou použitelné v různých okamžicích.

Makro Formuláře Popis
CategorizeDialog Nová poštovní zpráva
Zpráva
Úkol
Vyvolá dialogové okno „Všechny kategorie“. Tuto funkci je vytvořena zejména pro integraci do formuláře (karty pásu karet) „Nová poštovní zpráva“, který kupodivu nemá jednoduchou možnost výběru kategorie.
DoNextStep Úkol Tato funkce provede „přechod“ úkolu (projektu) na další krok ze seznamu všech dalších kroků. Zruší kontext (kategorii) předchozího ukončeného kroku a nastaví nový kontext (kategorii) navazujícího kroku. Současně změní datum zahájení úkolu na datum podle nastavení nového dalšího kroku.
ChangeActiveNextStep Úkol Umožní změnit aktuální „další krok“ na jiný (a to i zpátky). Vyvolá formulář pro zadání čísla nového dalšího kroku. Číslo znamená pořadové číslo řádku v textu úkolu.
ChangeProjectName Nová poštovní zpráva
Zpráva
Úkol
Umožní nastavit, změnit nebo smazat název projektu.
DoTomorrowPostpone Zpráva
Úkol
Umožní odložit datum zahájení práce na úkolu (nebo “ovlaječkované” zprávě) na zítřek, aniž by byl ovlivněn naplánovaný termín splnění.

Integrace do Outlooku se provádí buď prostřednictvím modifikace pásu karet (funkční od Outlook 2010) nebo panelu nástrojů Rychlý přístup.

Aktuální skripty ke stažení: GTD.ZIP

1 komentář:

  1. V "GTD v Outlooku II/4 – Chytrá složka pro projekty" je projekt jako kategorie. Dokázal byste udělat makro pro vámi přidané pole projekt? Díky Michal Franc mxl.frc@gmail.com

    OdpovědětVymazat