Google Sheets Search Rows becomes extremely slow immediately and get ESOCKETTIMEDOUT after appending a new row, even on small sheets

:bullseye: What is your goal?

I want to read the latest data from a Google Sheet immediately after a new row is appended (using Google Sheets – Search Rows) with consistent performance (~1 second), in a LINE bot scenario.

:thinking: What is the problem & what have you tried?

I have two LINE bot scenarios using the same Google Sheet.

Bot 1 appends a new row to the sheet.
Bot 2 uses Google Sheets – Search Rows to read the latest data based on user input.

This setup worked normally for over a month. Recently, immediately after a row is appended (manually or by Bot 1), the Search Rows module becomes extremely slow (from ~1 second to several minutes). After some time, it returns to normal speed. When another row is appended, the slowdown happens again.

This occurs even when:

The scenarios are not running concurrently

The Google Sheet is newly created and contains only ~20 rows

Only a single row is appended

What I have tried:

Creating a brand-new Google Sheet

Narrowing the column range (e.g., D–D instead of A–CZ)

Using only “Equal to” filters (no Contains)

Leaving Field Type empty

Adding delays after appending rows

The issue still happens and sometimes results in ESOCKETTIMEDOUT errors.

Is this expected behavior due to Google Sheets post-write latency, or is there a recommended pattern to reliably read data immediately after appending while still using the same sheet?

:clipboard: Error messages or input/output bundles

ESOCKETTIMEDOUT

:camera_with_flash: Screenshots (scenario flow, module settings, errors)

1 Like

This isn’t about the sheet size.

What’s happening is right after you append a row, Google hasn’t fully stabilized the read layer yet. The write is accepted fast, but the Search Rows module still runs a query across the range and that’s where the delay kicks in. That’s why it works fine, you append one row, then suddenly it slows down or throws ESOCKETTIMEDOUT, and later it goes back to normal.

Search Rows is heavier than people think. It’s not just grabbing “the latest row,” it’s querying the sheet.

If you’re appending the row yourself, I wouldn’t search for it immediately. The append module already returns the row number and data in the output. Use that directly, or store the row number somewhere and switch to “Get a Row” instead of running a search again.

If you need consistent ~1 second performance for a LINE bot, Sheets might not be the best real-time layer. It’s solid for logging and reporting, but not ideal for transactional read-after-write. In those cases I usually keep live interactions in a Data Store (or proper database) and let Sheets handle reporting.

If changing to Get a Row doesn’t fix it, then it’s not a module setting issue it’s the architecture.