This was something that I was looking for as well as I needed to do quite a bit of matching between my tables - that were previously using VLOOKUP in Excel. This did not seem to be possible with regular Airtable functions (and I tried a lot of crazy stuff), so I started looking into the Scripting block.
This actually allowed me to make a perfect solution. OK, almost perfect, you still need to change the name of tables and columns manually in the code, but with comments below this should be fairly straight forward.
Continuing the discussion from Vlookup for Airtable?: - This is awesome - exactly what I was looking for. One thing though:
How I can look up if the lookupValue is in a lookup field? (or a formula field that links to another field).
It seems like the cell has no value and therefore the whole lookup runs into nothing.
A way by e.g. extending the code above so that it might solve this, also?
Solution to this is highly appreciated -
I think both cases can be solved with help of "if"conditions. First one checking if the original column/field is empty (in case you have many empty values there). Second case already has a condition that executed when value is found, so it needs to be completed with else statement to execute action if case of not matching values.
Hi, - this is great & solves the setting of the “else” value!
The first check if not empty => basically does only what is says (gatekeeper for valid values) - but it does not solve the target:
use the value in the fields to look up.
Hmmm, I thought that was the entire point of this script example - to use each value in the primary table to lookup a record that matches in the secondary table and update a column back in the primary table.
This is precisely the pattern I use to do this and often. Pretty sure it’s doing that. If it wasn’t, how would explain these leading-zero values and one “Nothing Found” in the primary table?
Thanks, I found the script in your Medium article too. How can I feed data about which tables to look in and which fields to search from a record’s properties?
I am setting up a base called “Search” that has the following properties:
Name of base to search
Output column to generate the match list (record IDs)
Column to search
Exact match or contains
A parent filter is one that dictates which records a child filter can use, so it could speed up the child’s search by already having eliminated some possibilities.
I would like the table to calculate all the records that match the search-filter query as a list of record IDs. The result would look like this: rec6a2kirXC7AESjq ;; recYo9A3ylGxI8w0A ;; recr59z46kzIoZMFT for three matches or much longer when there are many matches.
The problem is that I would need to write the column names into the code. I want the code to repeat for every record in a table when I call the VLookup function. Each record where it runs would have a property for each of the inputs and outputs. Does that make sense?
Yes, it does, but I think we need to establish a few things first:
I responded to a specific question about the points in someone else’s code where the table and field names were specified.
I did so only to accelerate your changes to that code.
The strategy is now on a new compass heading; one that I’m not entirely understanding mostly because I’m working without any indication of a specific objective in the context of a specific table and data.
Pretty much all aspects of lookup automation are possible with Script Blocks; it’s a simple matter of code. But, it’s very difficult to recommend a specific approach with so few details and especially so as an addendum to a thread that began in 2017.
I recommend you head on over tho the Script Block part of the community and present your requirements for your specific objective. I would leave out “VLookup”, and mentions of “just like Excel” because these are biased suppositions of an implementation approach and may work against you. Airtable is not Excel nor is it a “spreadsheet”.
Ideally, a requirements objective is void of implementation details or suggestions of a particular approach and will make it far easier for other community experts to better understand the business goal. Implementation ideas will probably then be in abundance.
You could use the new Automation feature to run a script when a record is added.
Note 1 - The scripts in Automation are limited by run time (30 sec) and CPU use (1 sec? I believe) so more complex scripts will not work.
Note 2 - Since you are talking about adding a new record, this could be actually a much simpler script, just searching for a value from the new record in the target table to match. This could work depending on size of the database. It might be also possible to use Automation action Update instead of script, but I would have to check this one.
@Greg_F This code is tremendously helpful. In your example if the value of item.barcode is removed the link in the Product field remains? In my instance I want that link to be severed. Do you know how I could do that?