How does Error Shield actually works?

I have been using the Error Shield with a couple of flows, specifically Get List Item and Facebook Ad Library Scraper. I noticed that this module doesn’t work well with Google Sheets that have a large number of data points. If it encounters an error, it will shift the data. When I asked Gummie if there was a way to preserve the order of the entries, it said that there was a variable array called is_error containing boolean values of each entry. However, such a variable is not available on the UI. Is there a way to obtain or maintain the order in which every data point exists on the Google Sheet? I’ve been using Python’s pandas library to clean the data after I do some enrichment.

I have tried using the Join Paths, but it doesn’t seem to do what I am expecting, which is to join the error (empty values or null values) with the result of the other modules, mentioned above, to preserve order.

Hey @Victor_Melara! If you’re reporting an issue with a flow or an error in a run, please include the run link and make sure it’s shareable so we can take a look.

  1. Find your run link on the history page. Format: https://www.gumloop.com/pipeline?run_id={{your_run_id}}&workbook_id={{workbook_id}}

  2. Make it shareable by clicking “Share” → ‘Anyone with the link can view’ in the top-left corner of the flow screen.
    GIF guide

  3. Provide details about the issue—more context helps us troubleshoot faster.

You can find your run history here: https://www.gumloop.com/history

Hey Victor, would you be able to share the run link from the previous runs tab where the Google Sheet node encountered an error and the data shifted? That really shouldn’t be happening, so I’d like to dig into it. My hunch is that the Google Sheet reader node itself might not actually be erroring out – something else in the rest of the flow or a subflow might be transforming the data. Once I have the run link, I’ll be able to take a closer look and give feedback. If you could also add any extra context to the run link, that would be super helpful.

In general, the function of the Errorshield node is divided into two parts. First, if a node is running in loop mode and you wrap it in an ErrorShield, then for any loop iteration where the node errors, it’ll just skip that particular error and continue with the next input, without halting the entire flow.

For other nodes (not operating in loop mode), like a Google Sheet node or a Website Scraper node that aren’t in loop mode, if they hit an error, the ErrorShield will simply catch the error, and it also won’t produce an output. In these cases, there’s an option on the Error Shield node to pass inputs through. This creates a new output on the ErrorShield node, available only for inputs where the child node inside the ErrorShield hits an error. This is useful if you want to reprocess those inputs or log them somewhere.

Hello

Thank you for looking at my question. Here is the link to one of my previous runs: https://www.gumloop.com/pipeline?run_id=Ecx6zrjbyAiJya5pApChSh&workbook_id=8Z2wW1De9j2MtWMgstdfbu&tab=2

To further illustrate my point, I’ve added a screenshot of what I’m seeing on my Google sheet. For the error shield, I was hoping that it would output an error list such as

error_list = [none, string1, none, none, none, string2]

However, it appears that the result that gets written down on the sheet is this:

error_list = [string1, string2]

If the first list were written out in the Google sheet, there would not be a discrepancy between the two columns in the screenshot.

I see what you mean now–the screenshot really helps clarify the full context, so I appreciate you sharing that. You’re absolutely right about the format and the error: when an error occurs, only the inputs where the error happened are available as the error output, so you won’t maintain the same list size as the original input.

Given what you’re trying to achieve, this should actually be pretty straightforward if you use the Google Sheet Updater node instead of the Google Sheet Writer node. The Writer node, especially when you select “Write to Column,” just writes data vertically down a column. That’s why you’re seeing the mismatch or shift in the data.

The Google Sheet Updater node works differently. It uses a search value and a search column, sort of like a VLOOKUP. It finds the specific row you were processing and updates only the columns you’ve set on the node for that row. This keeps a one-to-one relationship between the row you’re processing and the data you’re writing, so your data stays aligned.

Here’s the Google Sheet Updater node documentation if you want to dive deeper. Let me know if this approach works for you or if you run into any other issues–happy to help!

Hello,

I gave the updater a try, and I feel like I am missing something.

This is where I havean issue with the updater: https://www.gumloop.com/pipeline?workbook_id=8Z2wW1De9j2MtWMgstdfbu&tab=2&run_id=hmcUYbkPgHLKkytDSLQomw

This is another workflow where it is working as I expect it to work. I also noticed that there was an update for the node v10 to v12, and it feels like the behavior changed: https://www.gumloop.com/pipeline?workbook_id=8Z2wW1De9j2MtWMgstdfbu&tab=3

Hey @Victor_Melara, the list mismatch issue you’re seeing is happening because the data you’re passing in doesn’t have a one-to-one match between list items. That makes it troublesome for the node to properly update each row.

The easiest fix is to remove the error shields around specific nodes. I’d recommend removing the error shield from the Facebook Ad Scraper and the Get List Item nodes. Then, create a subflow that includes everything downstream of the Google Sheet Reader node – that means the Facebook Ad Scraper, Get List Item, and Sheet Updater nodes. You can then loop this subflow over your Sheet Reader node, and just add an error shield around the entire subflow instead of each individual node.

Here’s the documentation on list size mismatches with more details and examples.

Let me know if anything’s still unclear or if you run into more issues. Happy to help.

This is still a mismatch between the output of this workflow. Based on the documentation, the solution is a list that, say my data is N entries long, it would be N-K long. This would not maintain a 1-to-1 relation to my data. I thought that this was the point of using Google Sheet Updater. I might as well just write the error shield output to a dummy column and use python to remove the rows that fail the Facebook Ad scrapper.

Hey @Victor_Melara – Can you share your latest workflow link? I can take a look to see how it can be structured to maintain the 1-to-1 relation.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.