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

3.4 KiB
Raw Permalink Blame History

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/<id>/<maj>/<min>", "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_DIRWhatToDownload/ (bere se nejnovější .xlsx)
  • STATE_FILEdownload_state.csv
  • DOWNLOAD_DIRU:\Dropbox\!!!Days\Downloads Z230
  • STATUS_FILTERNone = stahovat vše; např. {"Approved"} pro jen schválené dokumenty
  • MAX_ATTEMPTS / RETRY_PAUSE_MS / BETWEEN_DOCS_MS — retry a pauzy

Spuštění

& "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.