Hi everyone,
I’m building a meeting scheduler workflow. When I say “create meeting with X”, the AI extracts the name and Google Sheets should return only the matching contact row.
But my problem is when it comes to Google Sheets Get Row(s) node returns all rows instead of filtering by the name. I tried to add filter in it but then it didn’t get the output at all. I tried to add Filter node after Google Sheets node but still is the same. Because i want to build this, my telegram bot understand the input, AI agent get the name and time, then it look up to the Google Sheet and find the specific person’s information including it’s email. Then it creates event on Google Calendar (this part works btw)
What is the correct way to lookup a row by name in Google Sheets node?
Thanks
Workflow structure:
Telegram Trigger
↓
Calendar Tools AI Agent (extract name)
↓
Google Sheets Get Row(s) (contacts table)
↓
Filter node (compare AI name with sheet Name column)
↓
Google Calendar event
↓
Telegram confirmation
Hi @irmkoci Welcome!
I guess you should try to use the get row(s) node built in filters something like set that column to the value of the AI extracted name expressed and so it will only push that out, which means that the sheet would only return the matching contact row instead of all rows.
to add to @Anshul_Namdev’s point — the key is where you put the filter value. inside the Google Sheets Get Row(s) node, open Filters, set the column to Name, and in the Value field switch to expression mode and use:
{{ $(‘AI Agent’).item.json.output }}
(replace output with whatever field your agent actually returns the extracted name in — check the AI Agent output panel to see the exact key)
the common mistake is either leaving this as a plain text string or referencing the wrong node/field. if your agent extracts the name as e.g. contactName, it would be {{ $(‘AI Agent’).item.json.contactName }}.
this way the filtering happens server-side in the Sheets query itself and you won’t need the separate Filter node at all.
the issue is almost certainly case sensitivity — the AI agent outputs the name differently than how it’s stored in your sheet. in the Filter node, use a lowercase comparison on both sides: {{ $json.Name.toLowerCase() }} equals {{ $(‘AI Agent’).item.json.name.toLowerCase() }}. also for the Google Sheets node itself, make sure you’re using ‘Get Many’ with no filter (get all rows), then let the Filter node do the matching — the built-in Google Sheets filter is finicky with dynamic values from AI output. once that works your Calendar step should pick up the right email automatically.