javascript:(async function() { var wait = (ms) => new Promise(r => setTimeout(r, ms)); var name = "Statement"; if (window.location.hash.includes("Account=")) { name = window.location.hash.split("Account=")[1]; } else { name = prompt("Enter Account Name (Valley, SHC, BSBS, Ascott):") || "Statement"; } var links = Array.from(document.querySelectorAll("a.DocLink")); if (links.length === 0) { alert("No statements found. Please wait for the list to load."); return; } var count = 0; var months = {'JAN':'01','FEB':'02','MAR':'03','APR':'04','MAY':'05','JUN':'06','JUL':'07','AUG':'08','SEP':'09','OCT':'10','NOV':'11','DEC':'12'}; console.log(">>> Starting Download Job for: " + name); for (const link of links) { var textDiv = link.querySelector(".fiftydoc"); var rawText = textDiv ? textDiv.innerText.trim() : link.innerText.trim(); var m = rawText.match(/([A-Za-z]{3})\s+(\d{4})/); if (!m) continue; var mm = months[m[1].toUpperCase()]; if (!mm) continue; var filename = "Numerica - " + name + " - " + m[2] + "-" + mm + ".pdf"; console.log("Processing: " + filename); try { var resp = await fetch(link.href); var text = await resp.text(); var parser = new DOMParser(); var doc = parser.parseFromString(text, "text/html"); var saveLink = doc.querySelector("#SaveAnchor"); if (saveLink && saveLink.href) { var pdfUrl = saveLink.getAttribute("href"); if (!pdfUrl.startsWith("http")) { pdfUrl = saveLink.href; } var pdfResp = await fetch(pdfUrl); var pdfBlob = await pdfResp.blob(); var blobUrl = window.URL.createObjectURL(pdfBlob); var a = document.createElement('a'); a.style.display = 'none'; a.href = blobUrl; a.download = filename; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(blobUrl); document.body.removeChild(a); count++; console.log(" -> Downloaded"); } else { console.warn(" -> Failed: Could not find #SaveAnchor in wrapper."); } await wait(1500); } catch (e) { console.error("Failed " + filename, e); } } alert("Batch Complete! Downloaded " + count + " files."); })();