I bounce between portals and CRMs and currently blast through a 10-field vendor form using TextExpander plus an AutoHotkey tab sequence — about 28 minutes for 100 records last night on a logistics portal. Anyone have a sturdier way to push a CSV into web fields without full-blown RPA, ideally something I can tweak between shifts when a label changes?
I’ve had the best results with a tiny Tampermonkey userscript (https://www.tampermonkey.net/) that adds a ‘Load CSV’ button and fills the form by mapping columns to CSS selectors (e.g., {‘#vendorName’: row[0], ‘input[name=addr1]’: row[1]}), so when labels shift I just tweak the selector map. Small caveat: it needs reasonably stable IDs/data-*; otherwise anchor selectors near the visible label. Want a 20‑line template?
Quick win: I use a clipboard‑driven bookmarklet with PapaParse (https://www.papaparse.com/) to paste a CSV row and fill fields by name/aria-label, with a tiny mapping object I tweak when a label changes. On a 10‑field vendor form it cut 100 records from about 28 min to about 15, and I step rows with a hotkey that advances the index. If your logistics portal exposes stable name attributes this stays sturdy without full RPA — want a gist of the snippet, or do you need true file upload?
Try a Chrome DevTools Snippet that reads a CSV row from the clipboard, maps headers to selectors, and fills by name/aria-label; stash the per‑portal mapping JSON in localStorage so you can tweak it when labels change, with a small caveat for shadow DOM/iframes. @miyo68’s approach is close, but a Snippet avoids an extension and you can add a quick “rebind” mode to click a field and record its selector. Do your forms expose stable name or aria-labels?
On my last logistics portal I ditched the tab‑chains and used the Automa extension (https://automa.site) to import a CSV and run a short flow targeting stable IDs/placeholder text; when a label shifts I just tweak that one selector and keep the same flow. It took me from “28 minutes for 100” to about 16–18, and I still trigger submit with AHK so I can pause when a row needs a manual check. Do the fields keep the same IDs for you, or does the portal randomize them per session?
@julianhol I moved this into a tiny Tampermonkey userscript (https://tampermonkey.net) that loads the CSV once and steps record‑by‑record with Alt+N; it fills via data-test/data-field hooks and a fuzzy match on nearby labels, so when a label shifts I just tweak one mapping and keep going — 100 took about 15–18 min. If your portal randomizes IDs, a MutationObserver with a short wait before filling made it reliable; want the snippet?