Hello! I posted this originally in a thread of people who had similar issues, but it was marked solved years ago and the solution was to just not use Google Sheets and use the “Airtable Block” which appears to have been removed since that post was made years ago. My workflow requires Google Sheets, so I’d love to get this working.
Here’s what I’m running into: the “list of values” block is seemingly the only Data Sources block that live-updates with Google Sheets every time it is run. This isn’t great, as it returns all of the values in a column.
The “get value from” and “get row object” blocks appear to be using some sort of cached data, and only update when the app is restarted. It would make sense that Thunkable caches the data for better performance, but my Google Sheet has realtime data I need in my app.
This image shows three blocks that should do the same thing: when I click a button update a text label with the first row of the “Value” column in a Google Sheet. They all do this successfully, but only the first one goes and re-checks Google Sheets for new values. The bottom two require you to completely restart the app if you want the most up-to-date information. (The three next to each other is just to mock it up for this example: I tested them individually.)
I’d love to at least have a better understanding of what’s happening behind these blocks. I’m brand new to Thunkable and with years of threads on this topic, I wonder if this is just intended behavior. In the meantime I’m going to see if there’s a way to get around it with the Google Sheets API.
If you did want to use Airtable, the filterByFormula API call is quite powerful. There are example on these forums.
I’ve taken to using Firebase for just about all cloud data. It’s a pain but I get tired of inconsistent results in Thunkable using Get Value. I’ll spend so long troubleshooting my code only to realize that the blocks just don’t do what they are supposed to.
My problem is I really need Google Sheets specifically. The app I’m making on Thunkable is for a live online trivia game; it’s an app for players to submit answers. Airtable lacks many of the formulas I need to make it work (=RANK being the biggest), as well as the ability to re-position the data and manipulate it. Even if I figured all of that out, the graphics system we use doesn’t allow for any Airtable integration: only Google Sheets. I’ve been so envious of Airtable’s API abilities but alas I’m stuck with Google Sheets for the time being.
@tatiang@creativeland I wanted to chime in here as we’ve just finished lots of discussions and feedback about these get value and get row object blocks. This gets brought up quite often and, as Tatian noted above, has long been tagged as a “bug” on the platform.
The original intention for these blocks was to only retrieve the value of the data when the app opens. They are not intended to refresh the database each time the block is called. The reason they display the cached data is that removing it would likely cause creators to hit their rate limits on cloud services. That is something we do not want.
In short, the way those two blocks won’t change.
But, we do need to fix something here and offer a solution to this issue. I think we can do is offer a way for that data to be refreshed, similar to the call Refresh Data block that we have available with our Data Viewers.
Would something like this make sense to do? As part of the Creator Success team, I am your advocate here and want Thunkable to work based on what our users are trying to achieve. Please offer your feedback here, I promise it will be shared.
@matt_conroy Not only do I think that’s a great solution, I think I actually prefer it! Having full control of when Thunkable pings Google Sheets for new info would be great for what you mentioned about cloud service limits, but also from an app performance standpoint.
Just like your example, a block that just refreshes the Google Sheets data source would be excellent and should solve this issue.
Having the option to use cached data or go get new data turns this from a bug into a feature! Appreciate it Matt!
@matt_conroy That’s the type of response that I think has largely been missing from these forums. In the last, a user would bring up a significant bug (or in this case, an intentional way of programming a block to avoid a later consequence) and there would be mostly silence from the staff. So first, I’m really appreciative of this!
And I think that makes sense as a workaround solution. I’d love to hear from people like @jared who are more knowledgeable than I am about data sources.
Thanks, @tatiang, I know the whole team will appreciate this feedback. I know it may not always seem like it, especially here, but we are seeing your bugs and feedback and doing what we can to fix those issues.
@matt_conroy This obviously isn’t going to happen overnight, but please update us on this if you hear any response from the team. If you could especially communicate a timeline for when something like this could be released I’d really appreciate it, as I’m pretty much in a holding pattern to deploy my app until this is resolved, and I’d love to migrate away from my current platform. Thanks again for your help with this.
@tatiang i hate the idea of google sheets or airtable as the database for any real production app. The data blocks are not useable imo because they only interact with those 2 data stores. I’d use Firebase, xano, or supabase. Not much else…. Maybe aws but it’s a pain in the ass. Maybe google cloud sql with Firebase functions and auth.
The idea of dropping in a couple blocks and voila! is always so enticing to me. But I understand that taking the time to structure Firebase data is preferable. I’ll probably stick to that from now on.
I agree with that but at the eod, it’s about what works best for your project. Sometimes google sheets/airtable is enough and that’s quite fine. They just aren’t really best designed for complex business apps in terms of data storage/retrieval or overall backend capacity in my opinion.
I am a big fan of Firebase but not using cloud variables only. For certain things I’d use the restAPI interface or construct api endpoints myself to custom query the database and do certain logical operations
Ok so it seems this is an issue with Air table too… it behaves the same way. It only pulls data from the table once… sigh… I am very confused as to how this is useful if you can’t even update a piece of data reliably.