# download_vault_v2.1 — Dávkové stažení source files z Veeva Vault (J&J V-TMF) **Verze:** 2.1 · **Datum:** 2026-06-12 Playwright skript pro dávkové stažení source-file dokumentů z Veeva Vault (vtmf.veevavault.com) podle Excelu, s perzistentní session, ručním potvrzením 2FA, průběžným stavem (resume) a ukládáním do adresářového stromu Type\Subtype s pojmenováním podle Description. **Změny v2.1 oproti v2.0** (starší verze v TRASH/): - cílová složka `U:\Dropbox\!!!Days\Downloads Z230\VTMF-77242113UCO3001\\\` - jméno souboru: `YYYY-MM-DD Description [VTMF-xxxxxxxx] [v1.0].` - datum z `Document Date` (165 řádků ho nemá → bez prefixu) - Description sanitizovaný na platné jméno (nepovolené znaky → `_`, sjednocené mezery/podtržítka, ořezané okraje); 16 prázdných Description → fallback na Document Name bez koncové verze - verze z konce `Document Name` `(vX.Y)` → `[vX.Y]` (u všech 1959) - přípona skutečná ze staženého souboru - `LIMIT = 10` — počet dokumentů na jeden běh (None = všechny zbývající); kombinuje se s resume: další běh navazuje na download_state.csv - všech 1959 cílových cest ověřeno jako unikátní (suchý test) ## Vstupní Excel Nejnovější `.xlsx` ze `WhatToDownload/` („Document Inventory Report - Study Level.xlsx" z Vaultu). Potřebné sloupce: Document Name, Document Number, Document Status, Type, Subtype, Description, Document Date. Document Name/Number/Status jsou `=HYPERLINK(...)` vzorce — URL (`/ui/#doc_info///`) a zobrazený text se berou regexem. Pozor: report má rozbité deklarované rozměry listu — čte se přímou iterací řádků, ne přes max_row/max_column. ## Běh 1. Údaje z `.env` v rootu projektu (`VAULT_USER`/`VAULT_PASS`); chybí-li, skript šablonu založí/doplní, vyzve a skončí. 2. Načte Excel, odečte hotové z `download_state.csv`, vezme prvních `LIMIT` zbývajících. 3. Chromium s perzistentním profilem (`vault_profile/`), J&J SSO login, 2FA potvrdíte na telefonu + ENTER. 4. Maintenance dialog zavírá přes viditelné OK (`.ui-dialog a.ok.vv_button` — křížek je display:none!), čeká se na něj 8 s na home, 2 s na doc stránkách. 5. Každý dokument: doc URL → ikona Source File → uložení do stromu pod novým jménem. Retry 2× po 5 s, výsledek ihned do `download_state.csv` (`vtmf,result,file,timestamp`). 6. Souhrn a ENTER pro zavření. Pro úplně nový běh od nuly smazat/odsunout `download_state.csv`. ## Konfigurace (konstanty nahoře) `DOWNLOAD_ROOT`, `LIMIT` (10), `STATUS_FILTER` (None = vše), `MAX_ATTEMPTS`/`RETRY_PAUSE_MS`/`BETWEEN_DOCS_MS`, `EXCEL_DIR`, `STATE_FILE`. ## Spuštění ```powershell & "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v2.1.py" ```