# download_vault_v2.0 — Dávkové stažení source files z Veeva Vault (J&J V-TMF) **Verze:** 2.0 · **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 přejmenováním souborů podle VTMF čísla. **Změny v2.0 oproti v1.x** (jednodokumentové verze v TRASH/): seznam dokumentů se čte z Excelu ve `WhatToDownload/`, průběžný stav v `download_state.csv` (přerušený běh naváže, hotové se přeskakují), retry 2× na dokument, volitelný filtr Document Status. ## Vstupní Excel Skript vezme **nejnovější `.xlsx`** ze složky `WhatToDownload/` (typicky „Document Inventory Report - Study Level.xlsx" z Vaultu). Očekávané sloupce: `Document Name`, `Document Number`, `Document Status`. Sloupec Document Number obsahuje vzorec `=HYPERLINK("https://vtmf.veevavault.com/ui/#doc_info///", "VTMF-XXXXXXXX")` — skript z něj regexem bere přímou doc URL i VTMF číslo (ošetřen je i „pravý" hyperlink přes cell.hyperlink a oříznutí rozbité URL). Pozor: report z Vaultu má rozbité deklarované rozměry listu (tváří se jako 1×1) — skript proto iteruje řádky přímo a nespoléhá na max_row/max_column. ## Co skript dělá 1. Načte přihlašovací údaje z `.env` v rootu projektu (`VAULT_USER`/`VAULT_PASS`); když chybí, založí/doplní šablonu v `.env`, vyzve k doplnění a skončí. 2. Načte dokumenty z Excelu, odečte už stažené podle `download_state.csv`. 3. Otevře viditelný maximalizovaný Chromium s perzistentním profilem (`vault_profile/`), přihlásí se přes J&J SSO; případné 2FA potvrdíte na telefonu a stisknete ENTER. 4. Zavře maintenance/login dialog — kliká na viditelné OK (`.ui-dialog a.ok.vv_button`; křížek v titulku je display:none a nejde na něj klikat). Dialog se objevuje se zpožděním, čeká se na něj 8 s na home, 2 s na stránkách dokumentů. 5. Pro každý dokument: otevře doc URL, klikne na ikonu **Source File**, stažený soubor uloží do `U:\Dropbox\!!!Days\Downloads Z230\` jako `původní název [VTMF-XXXXXXXX].přípona`. Při chybě 1 retry po 5 s; výsledek se ihned zapíše do `download_state.csv`. 6. Na konci vypíše souhrn (staženo/chyb) a čeká na ENTER. ## Průběžný stav a navázání `download_state.csv` (vedle skriptu): sloupce `vtmf, result, file, timestamp`. Dokumenty s `result=ok` se při dalším běhu přeskakují; chybové se zkusí znovu. Běh jde kdykoli přerušit (Ctrl+C nebo zavření okna) — stav se zapisuje po každém dokumentu. Pro úplně nový běh od nuly soubor smažte (resp. přesuňte do TRASH/). ## Konfigurace (konstanty nahoře ve skriptu) - `EXCEL_DIR` — `WhatToDownload/` (bere se nejnovější .xlsx) - `STATE_FILE` — `download_state.csv` - `DOWNLOAD_DIR` — `U:\Dropbox\!!!Days\Downloads Z230` - `STATUS_FILTER` — `None` = stahovat vše; např. `{"Approved"}` pro jen schválené dokumenty - `MAX_ATTEMPTS` / `RETRY_PAUSE_MS` / `BETWEEN_DOCS_MS` — retry a pauzy ## Spuštění ```powershell & "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v2.0.py" ``` Společný venv projektu už obsahuje playwright i Chromium; jinak `pip install -r requirements.txt` a `playwright install chromium`.