Files
janssen/Outlook/download_all_inbox_eml_v1.0.md
T

2.4 KiB

download_all_inbox_eml_v1.0

Verze: 1.0 Datum: 2026-06-03

Cíl

Stáhnout zprávy z Outlook Inboxu jako .eml soubory.

Klíčový princip — virtualizovaný seznam

OWA drží v DOM jen ~16 viditelných řádků. nth(19) proto nefunguje. Řešení: navigace klávesnicí — vybrat první zprávu a opakovaně mačkat ArrowDown. Outlook sám scrolluje a dorenderovává. Aktuálně vybraná zpráva je vždy [role="option"][aria-selected="true"].

Oddělovače sekcí (Today / Yesterday / This week)

Jsou to role="button" aria-expanded prvky, ne zprávy. Když na nich kurzor po ArrowDown zastaví, žádná zpráva nemá aria-selected (selected.count() == 0). Takový krok se musí jen přeskočit (ArrowDown dál), NEpočítat jako zprávu a NEukončovat smyčku. Konec seznamu se pozná až podle toho, že se aria-label vybrané zprávy přestane měnit (no_progress).

Alternativa: v OWA přepnout řazení na "Show as Messages" (bez seskupení podle data) — pak seznam žádné oddělovače nemá.

Postup

  1. Otevře OWA z persistent profilu (outlook_profile/).
  2. Přejde do Inboxu.
  3. Vybere první zprávu.
  4. Smyčka: stáhne vybranou (pravý klik → Download → Download as EML) → ArrowDown → opakuje, dokud se výběr přestane hýbat (= konec seznamu).

Nastavení (v hlavičce skriptu)

  • LIMIT — max počet uložených zpráv (None = celý Inbox). Aktuálně 30.
  • SKIP_EXISTINGTrue = soubor stejného jména v downloads/ znovu neuloží; False (aktuální) = existující soubor smaže a uloží nový (přepis).

Výstup

downloads/<název_z_OWA>.eml. Při kolizi jmen:

  • SKIP_EXISTING=False → starý soubor se smaže a přepíše novým,
  • SKIP_EXISTING=True → soubor se ponechá, nový se neuloží.

Spuštění

python download_all_inbox_eml_v1.0.py

Poznámky / omezení

  • Celý Inbox (tisíce zpráv) přes UI je pomalý a křehký — pro velký objem nejdřív zúžit hledáním/filtrem v OWA. LIMIT=30 je rozumný test.
  • SKIP_EXISTING nešetří čas: identitu zprávy známe až z názvu po stažení, takže pravý klik + download proběhne pro každou zprávu; jen se nepřepíše soubor.
  • Konec seznamu se pozná tak, že se aria-label vybrané zprávy přestane měnit (počítadlo no_progress, práh NO_PROGRESS_MAX = 4).
  • Okno se po doběhnutí nezavře, čeká na Enter.