Files
ua-userscripts/scripts/peoplesoft-excel-download
Glenn Goossens 3ddac4fa8f README: verplaats dev-stub en naamgeving naar AGENTS.md
README is voor gebruikers; dev-workflow instructies horen daar niet
in. CLAUDE.md verwijst met @AGENTS.md naar het vendor-agnostische
bestand.
2026-09-01 16:59:23 +02:00
..

peoplesoft-excel-download

Laat de knop Downloaden naar Excel in de grids van PeopleSoft weer doen wat hij belooft. Het script vangt de klik op en bouwt zelf een .xlsx uit wat er in de tabel staat.

De grid-knop van PeopleSoft zelf levert een bestand op dat Excel niet wil of niet goed leest. Deze aanpak omzeilt de server volledig: wat je op je scherm ziet is wat in het bestand komt.

Installeren · gebeurt er niets, zie de installatie-uitleg.

Gebruik

  • Klik in een grid gewoon op Downloaden naar Excel. Er verschijnt rechtsonder een groene melding met de bestandsnaam en het aantal rijen.
  • De bestandsnaam bestaat uit de paginatitel, de naam van de grid en een tijdstempel, dus twee exports van dezelfde pagina overschrijven elkaar niet.
  • Getallen komen als getal in het bestand, niet als tekst. 1.234,56, € 1.234,56, (1.234,56) en een min achteraan worden alle vier correct gelezen volgens de nl-BE-notatie, en negatief blijft negatief.
  • De kopregel wordt vastgezet en de kolombreedtes worden op de inhoud gezet.
  • Bij een grid die je kan bewerken, wordt de waarde uit het invoerveld of de dropdown gelezen, niet de opmaak eromheen.

Hoe het werkt

  • De klik wordt opgevangen in de capture-fase op document, want PeopleSoft hertekent de pagina constant met AJAX. Een handler op de knop zelf zou dat niet overleven.
  • De knop-id (<GRID>$hexcel$<n> of $hdown$) verraadt bij welke grid hij hoort, en daarmee wordt de bijbehorende container gevonden.
  • Een PeopleSoft flex-grid is soms in twee tabellen gesplitst, een vastgezet deel en een scrollend deel, met dezelfde rijen. Het script leest alle tabellen en plakt de kolommen per rij-index weer aan elkaar.
  • Het schrijven gebeurt met SheetJS 0.18.5, via @require van cdnjs. Die bibliotheek zit dus niet in dit bestand, wat verklaart waarom Tampermonkey deze rij als honderden kB toont.
  • Is SheetJS niet geladen, dan valt het script terug op een CSV met puntkomma's en een BOM, wat Excel in een Nederlandstalige omgeving zonder importwizard opent.

Beperkingen

  • Alleen wat in de DOM staat. Een grid die zijn rijen pagineert, exporteert de pagina die je ziet. Zet de grid eerst op alle rijen.
  • Getalherkenning is heuristiek. Iets dat op een getal lijkt maar tekst hoort te blijven, zoals een code met punten erin, kan als getal in het bestand komen.
  • @grant GM_info staat in de kop maar wordt in de code niet gebruikt. Het staat er nog omdat het de uitvoeringscontext bepaalt en het script daarmee werkt; weghalen verandert die context en is niet getest.

Ontwikkelen

Eén bestand, geen build. De enige dependency komt via @require binnen.

Tijdens het ontwikkelen laad je het script via een dev-stub in plaats van een geplakte kopie, zie Ontwikkelen.

node --check peoplesoft-excel-download.user.js

De commentaren in dit bestand zijn in het Engels, de andere scripts in deze repo zijn in het Nederlands.

Licentie

GPL-3.0-or-later.