Files
janssen/VTMFDownloadFiles/TRASH/download_vault_v2.0.md
T
2026-06-12 15:29:57 +02:00

74 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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_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`.