Skip to main content

 

const table1 = base.getTable("Table 1")

const view = table1.getView("Grid view");

const record_view = await table1.selectRecordsAsync({fields: ["Name"]})

const record_filtered = record_view.records.filter(record => record.name === "Test 1")

 

I'm just trying to understand how scripts work on airtable. i'm not a expert on JS so it can have some errors, but i think i already did the filter in a right way but i can't console.log anything about the "record_filtered"

And im trying to update the record_filtered, but i can't get the recordId

let table = base.getTable("Table 1");
//let record = await input.recordAsync("Converting record", table)

const record_view = await table.selectRecordsAsync({fields: ["Name"]})

const record_filtered = record_view.records.filter(record => record.name === "Test 1")

let test1 = "gui123"
let recordId = record_filtered.id;

await table.updateRecordAsync(recordId, {
"Name" : test1,
})

 

Is because record_view.records.filter returns an array an not object, you have two ways to solve this:

 

// the filter method returns an array, this is good you want to filter more than one record
// returns an array [{...}]
const records_filtered = record_view.records.filter(record => record.name === "Test 1")

let test1 = "gui123"
let recordId = records_filtered[0].id
// ^ access the first item in the array.

await table.updateRecordAsync(recordId, {
"Name" : test1,
})

 

 Alternatively you can use the find method

 

 

// Another way you can use if you only care about 1 record is the find method
// this method will return the first item that satisfies the provided testing function
// otherwise it will be null
const record_filtered = record_view.records.find(record => record.name === "Test 1") the record {...}

if(record_filtered) {
let test1 = "gui123"
let recordId = record_filtered
// you can use console.log too
console.log("recordId:", recordId);

await table.updateRecordAsync(recordId, {
"Name" : test1,
})
}

 

 The console.log will look like this:

I hope this helps. If you need more help feel free to schedule 15min call with me. 

 

Reply