yeah, what Jeff said
Also, you’ll notice one column in that group (usc/trimmed-name) that strictly speaking isn’t a User Specific Column - it’s a Text Plugin column. But I included it in that group as it kind of belongs there, and the fact that it operates on a User Specific Column effectively makes it user specific.
Yeah, this app seems to have been getting a bit of attention recently. I made it several months ago, so it was due for a bit of an update. I think the way I originally implemented that wasn’t particularly solid.
Hi @Darren_Murphy,
Merry Christmas!
When you get a chance, can I trouble you with an explanation about how to make this happen at Integromat? I’ve never worked with this service yet. I understood how to generate a webhook from Glide, including send a parameter with this (the last number/counter). I’ve then used a module called Math (I also saw there’s a built in module called “increment function”).
That’s where I got stuck.
First, I’m not sure how to use/call the parameter inside the math expression.
Second, I get an error saying “A transformer should not be the last module in the route”. This is logical, as I haven’t built a scenario block for returning the new calculated number. I just can’t understand how to do so…
Your final step should be to write the updated value back to your Google Sheet, so you’ll need a GSheet module for that. The math module shouldn’t be necessary - I didn’t even know it existed - if all you’re doing is incrementing a number then you could do that within the GSheet module.
You are working with a Google Sheet, yes?
If you’re only working with Glide Tables, then you’re wasting your time heading down this path (unless you happen to have an Enterprise license).
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.
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.
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.
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 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?
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.