Files
2026-06-12 15:29:57 +02:00

2.8 KiB
Raw Permalink Blame History

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\<Type>\<Subtype>\
  • jméno souboru: YYYY-MM-DD Description [VTMF-xxxxxxxx] [v1.0].<přípona>
    • 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/<id>/<maj>/<min>) 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í

& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v2.1.py"