Skip to main content

Hello guys, I have an Airtable managing my bills in multiple currencies.


I’ve been trying to customize the eAirtable Currency Converter]

(Airtable Scripting) to convert each record with the conversation rate of its date. I want it to be automated given that I have 5,000 records of bills.


I suspect my syntax is wrong, but maybe the logic of my code is completely wrong too.


My code is the following :


// load table and records

let table = base.getTable("Table 1");

let result = await table.selectRecordsAsync();

// launch a 'for' loop to fetch conversation rate then update each record depending on value of "Date" field

for (let record of result.records) {

await

// fetching exchange rate

let apiResponse = await fetch(`https://api.exchangeratesapi.io/${record.getCellValue("Date")}?base=EUR`);

let data = await apiResponse.json();

let conversionRate = data.rates.GBP;

// updating the record

table.updateRecordAsync(record, {

'Exchange rate': conversionRate,

});

}

The code doesn’t work. Thank you for your help / insights / corrections.

Hi @tyloria - you’re pretty close. You’ve got a rogue await in the for loop that is causing the issue. This works:


let table = base.getTable('Table 1');

let query = await table.selectRecordsAsync();

for (let record of query.records) {
let date = record.getCellValue('Date');
console.log(date);
let apiResponse = await fetch(`https://api.exchangeratesapi.io/${date}?base=EUR`);
let data = await apiResponse.json();
let conversionRate = data.rates.GBP;
console.log(conversionRate);
table.updateRecordAsync(record, {
'Exchange rate': conversionRate,
});
}

Hi @tyloria - you’re pretty close. You’ve got a rogue await in the for loop that is causing the issue. This works:


let table = base.getTable('Table 1');

let query = await table.selectRecordsAsync();

for (let record of query.records) {
let date = record.getCellValue('Date');
console.log(date);
let apiResponse = await fetch(`https://api.exchangeratesapi.io/${date}?base=EUR`);
let data = await apiResponse.json();
let conversionRate = data.rates.GBP;
console.log(conversionRate);
table.updateRecordAsync(record, {
'Exchange rate': conversionRate,
});
}

Absolutely amazing … The scripting block is so cool for people who don’t really know how to code like me !


thank you @JonathanBowen !


Reply