I am working with Google Sheet. I wouldn’t want to provide such a 3rd party access to these confidential Google sheets. I thought I can use Intogromat by just sending them a specific value and getting back a specific value. I guess it’s back to the Newton API that I mentioned earlier in this post. That API is super-simple but I’m rather concerned it’s not very reliable. i.e. - API calls won’t always be responded.
I’m still amazed Glide has now built-in function to safely increment a number. It’s like we need to call a tow truck so they can switch the wipers on…
I don’t think that will help you here. The problem is that the API calls will be initiated from the clients. So if two or more clients initiate a call at the same time, they will each be sending the same current value of the counter. And if all the API is doing is taking that and incrementing it by 1, then you’re back to square one.
The only way this would work reliably would be if the API was maintaining its own independent counter. But I don’t believe that’s the case?
If you’re not willing to use Integromat, then I think the next best option in your scenario is to use Apps Script to manage it. That is, allow records to be created without an ID, and then use a trigger (with a lock) that detects new records and inserts the appropriate ID value, then allow that to sync back to Glide. There will be a delay of course, but as far as I can see it’s the only way to guarantee uniqueness.
Thanks.
Yes, LockService within GS is the way we do it now, but it’s far from ideal. Guess it’ll have to do.
PS - There’s an increment function within Integromat, but I believe I’ll still need to give it access to Google Sheets in order to get the response, so it doesn’t really help us here. It’s also strange that this function cannot accept a starting counter, rather starts with “1” after the first run
Thanks, one feature about groups I just stumbled upon is that if you click on the group in the very first row, it collapses the group, making the table easier to work with (verticle scroll), and you can un-collapse the group if you need to work with that group. I like it! I think I’m going to become a “groupie”, especially for computed columns.
I appreciate the “bit of an update”. Thanks again!
Yeah I think @Darren_Murphy tends to group by column type. I have been grouping my columns by function instead. For example, I have a table that lists students. I have a Name group that contains last name, first name, combined name, and other various ways that I format name. Then I have a Contact group for info, such as address, phone, email, etc. I have an Info Group that contain other miscellaneous info about the students. And, I have a GroupEmail group which handles all of the logic that I need for building and sending a group email to a select number of students that the coach chooses.
In another app, I have a series of columns that I needed to repeat 6 times as the function needs to be repeated. Each set performs a specific function as a combined group, and the result from that group is used for the next group. With grouping, I can easily find the correct column within the correct group.
There are a lot of ways to use grouping. Just depends on your preference and how you intend to organize your data.
yeah, I do. But I’ll admit that I’ve been rethinking that strategy recently. It’s fine when the number of columns in a table is relatively small - say <50 - but once you start working with very large tables it doesn’t always make the most sense. I’ve been putting a lot of work into a very large app in the past several days - there is a bunch of stuff that needed re-factoring in order to handle the rollover to a new year gracefully - and I’m coming to the realisation that functional grouping probably makes more sense. At least for this particular app.
The other thing I’ll say is that I started grouping columns by type before we had the fancy column icons and colours that we do now. So back then, I liked it because I could tell immediately the column type just by looking at the group/name. But that’s no longer really necessary.
I imagine someone has answered this, but I’m having trouble finding it…
@Darren_Murphy How can I create a relation directly to the row I’ve added via the custom form?
Use case scenario
On the SUBMIT button of my custom form I’d like to send a text message (via webhook) to the user containing a summary of their response from the from.
…Right now though it just grabs content from the top row in the sheet and sends that info.
Shouldn’t you be able to access the info directly in that row you’re using for the custom form setup?
I mean you can trigger a webhook before “add row”, just send that info on the same row you’re using to the webhook.
If you’re using a custom form, then you have all the entered values in user specific columns, right?
So what’s stopping you from using those in your web hook?
Thanks @Darren_Murphy & @ThinhDinh - I deleted my previous response saying this works. In actually implementing this the problem I’ve run into is that for my text message I’ve got it in a template, and that template (for it to read to a user properly) requires a few additional fields (such as the name of the item in the previous screen, etc) that I can’t get into that first row of a custom button, but rather get placed into the new row upon clicking the compound action (add row) button.
I’m sure there’s a simple fix, but we need more information. Some screenshots, a video, and/or a copyable version of your app.
I would use a set column action before you navigate to the screen of the custom form. What extra fields do you need?
Hey,
I am trying to create a booking app.
In this booking app, I want to enable hosts to upload their retreats.
What I would like to have is a custom form that is already prefilled with dummies (i.e. pictures and generic texts) and the host then uploads/(overwrites it with) their data. In the end, only the host should be able to change their retreat (so it needs to be user specific).
Has anyone here an idea on how I could achieve this?
I do the following a lot, with images in the user profile for instance:
- Basic / Image_Submit
- Generate image column (mesh or triangle) / Image_Default
- ITE column / If Image_Submit is empty then Image_Default else Image_Submit
@Robert_Petitto has a more advanced version than this on creating fun default avatars using the color palette column.
I use this technique (single relation to a working table/edit to working table) with a button bar for ADD/CANCEL and one action for both of these is clean-up (e.g. “remove this item” for the working table) before returning to previous screen.
One issue is the back button at the top of the screen. If the user clicks on it; no clean-up.
Can an action be attached to this navigation item at the top of the screen?
TIA
No, I would love that too but it’s not possible as of now.
You can hide Glide’s back button using the CSS code below (warning: it doesn’t hide the native back button on Android).
<pre><span><style>
[data-test="back-button"] {
display: none;
}
You can construct a floating back button to clear the columns as you want.
However, when I do custom forms, I just keep the inputs as long as the user has not submitted. It acts as some kind of a savable form where you can go back to other screens and go in later to continue filling the form.
Can you explain why you need them to be cleared?
One approach is to hide the back button, as Thinh described.
Another approach (and one I normally use instead) is to do your clean up on the way into the form. So if there are user specific columns that need to be cleared or set, do this as part of the action that opens the custom form screen. I like this approach better, as then you can leave the back button as it is.
I have created a custom form but on filling up the form, the tables (GlideTable) is not getting updated. Please help
Two questions:
- Are you using User Specific Columns to hold the values from your input components?
- Do you have an Add Row action attached to your submit button?