Skip to main content

Hi All,

I am having an issue with my script:

When using an integer value in the condition, the script works.

Example: return all records that have a value higher than 9 in the field name "Bedroom":

 

const propertyTable = base.getTable("Listing"); // Read the data from my Listing table const recordsFromproPertyTable = await propertyTable.selectRecordsAsync (); //Filter records matching a condition const matches = recordsFromproPertyTable.records.filter((records)=>{ return recordsFromproPertyTable.records.find((potentialmatch)=> { return records.getCellValue("Bedroom") > 9; } ) }) console.log(matches)

 

When trying to match the field value with a single select or multiple select field, I am getting the following error:

This condition will always return 'true' since the types  and 'string' have no overlap."

I am pretty sure this is due to the fact that I am comparing an Array with text but I am not sure how to solve this:

Return all records that have a value of "Villa" for the field name "Property type" (Single select field type)

 

const propertyTable = base.getTable("Listing"); // Read the data from my Listing table const recordsFromproPertyTable = await propertyTable.selectRecordsAsync (); //Filter records matching a condition const matches = recordsFromproPertyTable.records.filter((records)=>{ return recordsFromproPertyTable.records.find((potentialmatch)=> { return records.getCellValue("Property type") === "Villa"; } ) }) console.log(matches)

 

  Any help would be immensely appreciated.

50 youtube videos later, I did some modification and could kinda make it work.

 

// Script setup let opportunitiesTable = base.getTable("Opportunities"); // Ask the user for Input let opportunity = await input.recordAsync("Select opportunity", opportunitiesTable); console.log(opportunity) // Get the listing table let propertiesTable = base.getTable("Listing"); let allProperties = await propertiesTable.selectRecordsAsync({fields:["Property Name","Budget range","Property type","Land type", "View type"]}); // Filter all properties that could match let properties = allProperties.records.filter(property => { // @ts-ignore return property.getCellValueAsString("View type") === opportunity.getCellValueAsString("View type") }); console.log(properties)

The code below works great with a single select field since it passes the field value as text and compares them with each other. 

I am hitting a limitation with multiple select field types tho. The current script only filters records where the targeted field is an exact match. Is there a way to change it so that it acts like the usual airtable filter "Has any of the options"