Skip to content

Instantly share code, notes, and snippets.

@Swyter
Created July 8, 2025 07:51
Show Gist options
  • Select an option

  • Save Swyter/7c356775f12888e5287f80b12a55c896 to your computer and use it in GitHub Desktop.

Select an option

Save Swyter/7c356775f12888e5287f80b12a55c896 to your computer and use it in GitHub Desktop.
Get the un-exportable details like transaction notes and category in the dev tools console.
/* swy: paste on the dev console after the list has finished loading: https://web.bbva.es/index.html?v=30.3.22#accounts/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
cur_idx = 0;
expand_arrow_buttons = document.querySelectorAll(
".m-table-body__row span[data-testid=transactions-table-movement-row-detail-link] haunted-icon i.type-icon"
)
function click()
{
if (expand_arrow_buttons.length > cur_idx)
expand_arrow_buttons[cur_idx++].click();
}
/* swy: wait until the detailed transaction box expands before dumping the data and clicking the next */
mo = new MutationObserver(function(mutationsList, observer)
{
//console.log('[i]', mutationsList, observer);
for (var mutation of mutationsList)
{
if (mutation.target.tagName != "DL")
continue;
if (mutation.addedNodes.length <= 0)
continue;
note = document.querySelector('div[data-testid=transactions-table-movement-detail-notes]')
cate = document.querySelector('div[data-testid=transactions-table-movement-detail-categorization] dd span')
console.log(
`[---] cosa (${cur_idx})`,
note ? note.attributes['data-value'].textContent : "<none>", "///",
cate ? cate.textContent.trim() : "<none>"
);
click(); break; /* swy: every click after the first one */
}
});
mo.observe(document.querySelector('tbody.m-table-body'), { childList: true, attributes: true, subtree: true });
click(); /* swy: first click, makes the expando open and calls the mutation observer when the text is shown, when the data is there we can click again to repeat it all over again */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment