Doplňky, které komplexností překročí břehy „Hello World“, se s velkou pravděpodobností ptají uživatele na různé hodnoty (např. „Kolik vět máme vložit na místo kurzoru?“ nebo „Jaký jazyk preferujete?“). Aby byla práce s nimi pohodlnější, je vhodné tyto informace ukládat a nenutit uživatele, ať je vyplňuje znovu a znovu.
Než zvolíte některý ze způsobů, měli byste si ujasnit, k čemu chcete hodnoty používat. Základní parametry jsou:
- per dokument / nezávisle na dokumentu (tedy jestli se mění podle toho, jaký dokument otevřu),
- přenositelné / nepřenositelné (tedy jestli budu mít své volby k dispozici, i když aplikaci spustím ve Wordu na jiném počítači),
- náchylné na vypnutí aplikace / přežijí restart (tedy jestli hodnoty přestanou existovat, když Word vypnu).
Přímo do dokumentu
V situacích, kdy nevadí, že hodnoty cestují spolu s dokumentem, je možné ho použít jako úložiště. Office pak vytvoří neviditelný (nikoliv nepřístupný) chlíveček, v němž data uchová.
Hodnoty se ukládají per add-in a per dokument.
Jsou přenositelné na jiný počítač.
Nejsou náchylné na vypnutí aplikace, pokud je stihnete před tím uložit.
Aplikace Office se chovají různě. Word, Excel a PowerPoint používají objekt Settings.
Office.context.document.settings
- set()
- get()
- saveAsync()
Outlook ukládá na server (Roaming Settings) nebo jako CustomProperty vybrané položky.
Office.context.roamingSettings
Podstatné metody jsou stejné: get(), set(), saveAsync().
Dokumentacióne grande: https://msdn.microsoft.com/en-us/library/office/fp123509.aspx
Poznámka: Jestli tahle metoda není k něčemu vhodná, tak je to rozhodně ukládání přihlašovacích údajů a session dat.
Local Storage
Další možnost je využít toho, že doplněk Office je vlastně webová stránka a renderuje ji prohlížeč, a uložit data do Local Storage browseru.
Hodnoty jsou pak dostupné per add-in, bez ohledu na dokument.
Nepřenesou se na jiný počítač.
Přežijí vypnutí aplikace.
Uložit dvě hodnoty do Local Storage můžeme takto:
localStorage.setItem("dic", "cz"); localStorage.setItem("scount", "10");
A načíst je zase takhle:
var scountSetting = localStorage.getItem("scount"); if (scountSetting !== null) { $("#scountInput").val(scountSetting); }
Do Local Storage se vejde přibližně 10 MB a data nikdy neexpirují.
Session Storage
Session Storage je funkčně velmi podobná Local Storage, jenom nepřežije reload aplikace. Hodí se proto pro ukládání informací v rámci jedné transakce, kdy očekáváme, že ji uživatel dokončí v jednom běhu a už se k datům nebude vracet.
Hodnoty jsou dostupné per add-in, bez ohledu na dokument.
Nepřenesou se na jiný počítač.
Nepřežijí restart aplikace.
Syntaxe je totožná – jenom místo localStorage
použijeme sessionStorage
.
Cookies
Ano, jsme na webu, takže i zde můžeme použít cookies. Platí pro ně stejná omezení jako pro cookies v prohlížeči a používají se stejně.
Na server
Pokud chcete, aby byla nastavení (a další hodnoty) dostupná i na jiném počítači, kde uživatel aplikaci spustí, a zároveň nebyla vázaná na konkrétní dokument, nezbyde vám, než implementovat vlastní logiku a uložit je na svůj server. K tomu budete potřebovat mechanismus, jak spárovat uživatele s vaší aplikací. Word, Excel a PowerPoint zatím nedokážou získat ID přihlášeného uživatele a budete muset použít vlastní login. Outlook vrací alespoň jedinečný hash mailboxu.