Ukládání nastavení v doplňcích Office

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
Jeho podstatné metody jsou:
  • 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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *