var timer = setInterval(() => { document.getElementById('account-0-showMoreLink').click(); }, 1000); clearInterval(timer); function parse() { const results = []; document.querySelectorAll('#account-0-transaction-table > tbody > tr').forEach((node) => { if (node.nodeType === Node.ELEMENT_NODE) { const type = node.querySelector('[id$="-transactionType"] a').textContent.trim(); const date = node.querySelector('[id$="-tradeDate"]').textContent.trim(); const symbol = node.querySelector('[id$="-fundTicker"]').textContent.trim(); const quantity = node.querySelector('[id$="-quantity"]').textContent.trim(); const price = node.querySelector('[id$="-price"]').textContent.trim(); const fees = node.querySelector('[id$="-commissionsAndFees"]').textContent.trim(); const note = type === 'Reinvestment' ? 'Reinvestment' : ''; // — is used for money market funds if (!['Buy', 'Sell', 'Reinvestment'].includes(type) || symbol === '—') { return; } results.push({ date, symbol, type: type === 'Reinvestment' ? 'Buy' : type, quantity, price, fees: fees.startsWith('$') ? fees : '$0.00', note, }); } }); return results; } function toCSV(results) { return [ 'Date,Symbol,Type,Quantity,Price,Fees,Note', ...results.map(({date, symbol, type, quantity, price, fees, note}) => `"${date}","${symbol}","${type}","${quantity}","${price}","${fees}","${note}"`) ].join('\n'); } function download(content, fileName, contentType) { const a = document.createElement('a'); const file = new Blob([content], { type: contentType }); a.href = URL.createObjectURL(file); a.download = fileName; a.click(); } download(toCSV(parse()), 'vanguard.csv', 'text/csv');