Skip to content

Instantly share code, notes, and snippets.

@danicuki
Created November 28, 2022 14:11
Show Gist options
  • Save danicuki/11e385a774c31f705487c972502a6ada to your computer and use it in GitHub Desktop.
Save danicuki/11e385a774c31f705487c972502a6ada to your computer and use it in GitHub Desktop.
Get All Transactions from Gnosis to Google Sheets
async function GetStatements() {
var spreadsheet = SpreadsheetApp.getActive();
var s = spreadsheet.getSheetByName("Vault Payments")
s.getRange(1, 1).setValue("Nonce")
s.getRange(1, 2).setValue("submissionDate")
s.getRange(1, 3).setValue("To")
s.getRange(1, 4).setValue("value")
s.getRange(1, 5).setValue("transactionHash")
s.getRange(1, 6).setValue("Wallet")
wallets = ['wallet1', 'wallet2']
var row = 0
for (w of wallets) {
row = await GetStatementsFromWallet(s, w, row);
}
}
async function GetStatementsFromWallet(s, wallet, start) {
var res = await UrlFetchApp.fetch("https://safe-transaction.polygon.gnosis.io/api/v1/safes/" + wallet + "/multisig-transactions/");
var json = res.getContentText();
var data = JSON.parse(json);
var executed = data.results.filter(x => x.isExecuted && x.dataDecoded !== null);
var sorted = executed.sort((a,b) => (Number(a.nonce) < Number(b.nonce)) ? -1 : 1)
var mappedWithCSVTRansfer = sorted.map(line => {
if (line.dataDecoded.method !== 'multiSend') {
return line;
} else {
return line.dataDecoded.parameters[0].valueDecoded.map(item => {
return {...item, nonce: line.nonce, submissionDate: line.submissionDate, transactionHash: line.transactionHash}
})
}
}).flat()
for(var i = 0; i < mappedWithCSVTRansfer.length; i++) {
var line = mappedWithCSVTRansfer[i];
s.getRange(start + i + 2, 1).setValue(line.nonce);
s.getRange(start + i + 2, 2).setValue(line.submissionDate);
s.getRange(start + i + 2, 3).setValue(line.dataDecoded.parameters[0].value);
s.getRange(start + i + 2, 4).setValue(Number(line.dataDecoded.parameters[1].value)/1000000.0);
s.getRange(start + i + 2, 5).setValue(line.transactionHash);
s.getRange(start + i + 2, 6).setValue(wallet);
}
return i + start;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment