Skip to content

Instantly share code, notes, and snippets.

@benlye
Last active October 14, 2022 09:36
Show Gist options
  • Save benlye/13ee0e7a9eccf283f44b511e0479e68c to your computer and use it in GitHub Desktop.
Save benlye/13ee0e7a9eccf283f44b511e0479e68c to your computer and use it in GitHub Desktop.
Download all pay slips and tax documents from ADP
/*
1. Open https://my.adp.com/v1_0/O/A/workerTaxStatements in a browser and log in (make sure you are NOT in Incognito or InPrivate mode)
2. Open the browser Developer Tools Java Console (Ctrl+Shift+J or F12 -> Console)
3. Run the code below in the console (paste and press Enter)
4. Wait for the zip file to be downloaded
*/
var script = document.createElement('script');
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jszip/3.2.0/jszip.min.js';
script.onload = async function() {
var zip = new JSZip();
var resp = await fetch ('https://my.adp.com/v1_0/O/A/workerTaxStatements');
var jsonData = await resp.json();
var count = jsonData.workerTaxStatements.length;
for (var i = count - 1; i >= 0; --i) {
var index = count - i;
var entry = jsonData.workerTaxStatements[i];
var year = entry.statementYear.year.replace("/","-")
var url = "https://my.adp.com" + entry.statementImageUri.href.substring(3);
console.log("Fetching statement " + index + " of " + count + " - " + entry.form.code );
const blob = await fetch(url)
.then(function (response) {
if (response.ok) {
zip.folder('TaxDocuments').folder(year).file(entry.form.code.replace('/', '-') + ".pdf", response.blob())
} else {
return Promise.reject(response);
}
}).catch(function (err) {
console.warn('Error retrieving statement');
});
}
var resp = await fetch ('https://my.adp.com/v1_0/O/A/payStatements');
var jsonData = await resp.json();
var count = jsonData.payStatements.length;
for (var i = count - 1; i >= 0; --i) {
var index = count - i;
var entry = jsonData.payStatements[i];
var date = entry.payDate
var year = entry.payDate.split("-")[0]
var url = "https://my.adp.com" + entry.statementImageUri.href.substring(3);
console.log("Fetching payslip " + index + " of " + count + " - " + date);
const blob = await fetch(url)
.then(function (response) {
if (response.ok) {
zip.folder('Payslips').folder(year).file(date + ".pdf", response.blob())
} else {
return Promise.reject(response);
}
}).catch(function (err) {
console.warn('Error retrieving statement');
});
}
console.log('Preparing to download zip file - be patient, it can take a minute');
zip.generateAsync({type : 'base64'}).then(function (base64) {
var a = document.createElement('a');
a.download = 'ADP_Download.zip';
a.href = "data:application/zip;base64," + base64;
document.body.appendChild(a);
a.click();
console.log('Finished');
});
}
document.head.appendChild(script);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment