Way to copy Custom Action to other components?

Hi Darren! It is now so far: without substantial difficulties I solved my problem with calculating quiz score from the form “2 / 9” which submitts GoogleForms. Here one small test that demonstrates general functionality of using spreadsheet functions in glide: https://forms-glide.glideapp.io/

This was nice glide gym, but the complexity is extreme. It solves only the shortcoming from GoogleForms output, because they deliver the rating in the form “Correct / Questions”, instead this in two columns. I have found the solution which is 10x simpler and 10x more general, check here: https://forms-glide.glideapp.io/

Someone entered in https://forms-glide.glideapp.io/ two numbers 10 and 200, instead of two “formulas”, e.g.
10/200 and 15*22
Why?
We are testing the possibility of resolving GoogleForms scorie representation in correct mathematical way. Entering two numbers in two fileds is not our problem here.

Since you are using a google form and the results have to pass through a google sheet no matter what, wouldn’t it be easier to just split the value in the google sheet, then you can work with the split values within glide as two separate columns instead of trying to hack through it purely within glide. I don’t think it would introduce any form of additional lag, since a google form has to work with a google sheet anyway. Just an idea, since I’m not entirely sure why you need that initial split to happen within glide, since it would be much easier in the google sheet with an ARRAYFORMULA and SPLIT function.

Glide really does need better string manipulation, but right now it’s just not there. (Another one of those core functions that I think needs to be a primary focus for Glide.)

Better yet, you could build the entire quiz within glide, then you wouldn’t have to bother with google forms or google sheets and you would have full control of how the data is recorded and calculated.

2 Likes

Hi Jeff, here we might have one problem - GoogleForns is adding empty row! I am not so deep in sheet functions, does the ARRAYFORMULA overcome this problem?

Btw, as you see, I solved this problem another way, functions perfectly! Do check https://forms-glide.glideapp.io/ ! Nothing in glide, complete solution in the sheet!

An arrayformula affects all rows, so you only need to type the formula once and it affects all rows in that column. If a row is empty, then you can do a length check on a column that would normally be filled, so you can have it show a blank value instead of an error or zero if the row is not populated with anything yet.

I would recommend reading through this post.

3 Likes

Hi Jeff! I am a little bit ashamed with the fact that I never heard about ARRAYFORMULA, asa well as nothing about CSE in Excel. :frowning:
So I tried it with division formula =ARRAYFORMULA(value(left(B2:B100;find("/";B2:B100)-1))/mid(B2:B100;find("/";B2:B100)+1;100)) and it functions perfectly.
In general, your approach to have everything we need in sheet instead complicating glide finds my full understanding. In that respect it puzzles me, why do we have math and template functions in glide? This major development effort could be used for other more important glide featuers instead! One of them is for sure the objects replication. I will come to this discussion later today.

As discussed below with @Jeff_Hager , this development effort would be in vain! Sheets have all we need and glide development should use their resources for much more useful features, such as glide objects replication, for instance!

You need to look at the bigger picture. Glide have clearly stated on several occasions that they plan to support data sources other than Google Sheets. Already, it’s possible to build a complete Glide App using only Glide Tables. In which case, you have to rely 100% on Glide capabilities. So I would argue the opposite. Continuing to develop and extend the capabilities of Glide Computed columns is actually essential if Glide are to realise some of their bigger long term goals.

3 Likes

This is clear controversy, of course. Or better said - double sided coin. Of course, broader picture says that the tool has to be general, in this case to access to defferent possible sources. Here we should ask ourselves - why? Do you have some example, which outside sources are relevant here. For instance, I am using Moodle quizzes, where the results can be exported, but the database behind can’t be access without programming.
In addition, having native glide tables sounds great, but again - why?
If glide started with GoogleSheets, which are very powerfull, why not first to have normal features in glide - such as objects replication - instead of using resources for controversial picture broadening.
One good example: I have seen Quiz Time template, sophisticated solution by @erwblo , congratulations! But on the other side, again why? We have GoogleForms quizzes which are not perfect, but definitely superior to quiz solution “programmed” in glide!

This could be extremely helpful

There is one shortcoming related to Custom Action: one can CREATE Custom Action hooked to some component. In this very component you can recall and EDIT this Custaom Action. But there is no possibility to reuse this cusom action anywhere else. Even worse, if you delete this respective component, you lost its custom action for good. Here really I have to ask my standard question: "Is it possible to meet the guy or girl who designed it that way? :slight_smile:
Looking to the back office: what is the difference to store custom action in oNE component compared to have the repository of custom actions per app or even better per user? These really few lines of code. I am cordially suggesting NOT to develop advanced features of glide before this structural shortcomng is solved. I would call this a bug, not a shortcoming!

Ok, first I want to be clear that I only use formulas in google sheets if I absolutely need to. Meaning that Glide has not yet developed the feature I need. I only suggested for you to use google sheet formulas because at the moment, and the fact that you are using google forms, it’s much more efficient and a heck of lot easier than trying to do in with glide’s current feature set.

I do believe that string manipulation is one of the core features that glide should be prioritizing at the moment. Sure you can do a lot in a google sheet, but there are ramifications to that.

  • Cost - it costs a lot more for glide to pay google to sync data across than to host the data themselves. Glide loses money on free users. Using glide tables exclusively or reducing the amount of data that has to sync and resync between glide’s database and googles database helps to bring that cost down. So it’s most definitely in glide’s favor to build core functionality into glide.
  • Speed - Since you are outsourcing your form, you probably don’t notice any speed issues and it sounds like you are only using your app to view quiz data. Sure, in that case it’s fine because your app just waits for a form to submit data to a sheet, which syncs with glide’s database, and then pushes out to all devices. In a View Only App scenario, you won’t notice any speed or lag. Data shows up when it shows up. However, some of us need responsive apps. When I enter data in my app, I want to see results immediately. All of those glide computed columns process directly on a user’s device, so there is no need to wait the few seconds to minutes for data to be sent from the device to the glide servers to update their internal database, then sent to google sheet, then wait for formula’s to run in the google sheet, then wait for google to send the data to the glide servers for them to update their database, then finally send the result to the user’s device. Take the calculator I shared earlier. It was build entirely in glide with glide only functions. For the most part, the way I’m using it with user specific columns requires zero synchronization with even the glide server. I can run calculations and see results in real time. Sure I could run all of it through google sheet formulas, but as a free app, I would probably blow through my 500 monthly sheet edits within an hour. Plus every button press would take several seconds just to show anything on the display. The lag alone to wait for google sheet formulas to run would chase most users away if that is all we relied on. I have no issues with using sheet formula’s if necessary, but depending on the app, it can lead to severe speed and lag issues.
  • Complexity - To be totally honest, some things are just plain easier to do in glide. You can always set up a computed column in glide and it just works. It applies to all rows automatically. It’s fast. You don’t have to fight with side affects from moving columns around, renaming columns, formulas that are not arrayformula friendly, or errant data on empty rows. It just flat out works.

Google sheets and google sheet formulas have their place, but should be used sparingly. The more core functionality that can can be built into glide, the more it can hugely improve not only the developer’s experience, but user experience as well. Nobody is going to use an app that has a 5 second response time to every piece of data that they change in the app, period. We need more functionality within glide to make it run smoothly and run as any person would expect an app to run.

To touch on your point of the copy functionality. I agree, we could use something and I hope it happens eventually. But I hardly agree that it’s as simple as a few lines of code. As I touched on in my earlier post, there is some very deep integrations to all parts of the app. A “few” lines of code to copy something could probably work, but it would most likely be a non-functioning component or action, and 90% of those underlying conditions would be broke. Would you rather have a copy function that works 100% of the time, or a copy function that works 10% of the time and would require you to go through every setting in that component or action to get it correctly connected to the correct sheets and columns? To me it seems like much more of an undertaking to do it right. As a developer at my job, I work with code every day and it’s very common for a user to come back with “it should just do this”. To them, they want to see a different value on the screen and seems very simple. To me, it ends up being days or weeks of development, rewrites, and testing to see if anything else was affected by that change. The point I’m getting at is that most user’s have no idea what’s involved to make a change that looks simple on the surface.

I also want to point out that a lot of this was probably not a deliberate design decision by a programmer at glide. It was a feature that was added in it’s basic form to be enhanced later. Again, like I mentioned in my previous post, most things grow organically. You start with a core product that covers the basics. Once you get that core done, you build upon it.

  • In the beginning, there were no glide tables or glide computed columns. Everything was in the google sheets. At the time it was the best option we had, even though there was a noticeable lag. Eventually we got the glide data editor (which was initially view only). Then we got more and more computed columns. That combination alone made apps 5 to 10 times more responsive and opened the door to new app possibilities.
  • Eventually we got the ability to copy components. Yeah, that used to not be an option at all. We’ve also gained new components that make our apps much more useful.
  • Actions used to be simple and very limited. Over time we gained more useful actions, and just recently we got the custom action option, so it is still very new. Can you imagine what we had to do without custom actions? Usually is was getting very familiar with google scripts, or Zapier, or Integromat. All of which introduced their own lag to wait for the results we needed. Now we can do it in a custom action and see results as fast as we can tap a button. Glide’s next step is to allow reuse of existing actions, so they are getting there, but they had to first build the custom action flow to begin with.

Like I said before, Glide can’t release every possible combination of every single person’s number one features from day one. We would still be waiting for Glide to exist in our world if that was the case. People will always get a new function that most definitely makes life easier than it was before, then ask for even more because it wasn’t good enough. It’s human nature and we all do it. But if you want to go back to how glide was when I started using it 2 years ago, take away about half of the components, take away half of the actions, take away the ability to add or edit rows, take away glide tables, take away the data editor and all computed columns, do 100% of all calculations and data formatting in the google sheet, and do all complex backend processing using google scripts. After that, manually duplicating some components, screens, or actions in glide becomes trivial in my opinion.

We will get there, but it takes time. Every one of us has a different “must have” feature that we are waiting for, but I do have to say that developing apps with glide is 100% better, easier, and more capable than it used to be. Sure there are annoyances, but the previous alternatives were usually worse or non-existent. I’m confident that the Glide team will give us the features we want someday, but there are a lot of priorities and financial ramifications to consider. Until then, if I can still get the job done, albeit harder than it could be, I won’t complain too much. Only when I hit a brick wall that stops development cold, do I get anxious. As the saying goes, Rome wasn’t built in a day, and I’m sure it’s current form wasn’t designed from day one. It grew organically as needs changed through the centuries.

5 Likes

3 Likes

I agree with most of you statements you mentioned here. In general, I find such long posts not suitable for discussion, because if I would now write three pages of my comments, we would lose the context. So I suggest to take out the chunks we have different opinions and discuss them separately, provided there is common interest for that.
Here I would say 1st comment with different sstandpoint. @“Every one of us has a different “must have” feature that we are waiting for” I can object wit quoting: @Michael_hien : “This could be extremely helpful”. So, definitely not “every one”. :slight_smile: . Btw, @ray_d started this discussion, three of us find replication very important! I am yust bringing big picture: all elements are to be in the shape to be replicated!

I have zero issues with the request and those that support it. I actually encourage open discussion about it and requests for it. But at no time would I ever assume that I know more about the priorities of a company better than they ever would. I also would never discourage the efforts of a programmer that was probably doing their job following a spec sheet and completing the first steps of an ultimately bigger and more widespread ecosystem in the future. That is all.

2 Likes

#2 @" it costs a lot more for glide to pay google to sync data across than to host the data themselves":
This statement puzzles me a lot! My 1st impression was that Glide is a Google product. Now I searched to be sure, really there is no information about glide affiliation!? But I searched deeper, and I found this article about glide:

Google or not Google?

“Paying sync with GoogledSpreadsheet”, does glide pay for every sync? Flat rate or pay as you drive? If I am using it for free, glide pays sync to Google nevertheless?

Sorry to object this: “But at no time would I ever assume that I know more about the priorities of a company better than they ever would.”.

Company priorities can be desasterously wrong! I am not speaking about glide. I am speaking generally. As an evidence by example, take Kodak: they invented digital camera, but the priority of the company was conventional photography. This is the reason why they went Chapter 11 few years later!

I don’t want that glide experiences same destiny, because “they know their priorities best!”. Their priorities are NOT relevant. Relevant are the priorities of their users/customers.

Let’s take another example: " Use Multiple Choice Components to Filter an Inline List "

Thanks to @Robert_Petitto fascinating expertise I mastered this. But if I want to do it once more, I have to repeat whole process from scratch. And the proces consists out of 24 (twentyfour) steps in glide. Just tell me, who will do this exercise within the product labeled “no-code”. This can do only a programmer, but he/she will say: “No way! For me it is easier to code that and store in the form of reusable function/script/subroutine!”.

I am 100 % with you that glide is super. But I am strongly suggesting that they should listen to the voice of their users. Here in the community I want to see accepted user requests on the development timeline.

Back to your original statement: do not forget or underestimate “collective intelligence”. Its quotient is always by the order of magnitude higher than the quotient of “company intelligence”! :slight_smile:

Glide is not a Google product. That article using the term “Google Glide” is wrong, I believe Glide has never used that term themselves. They started out as a Google Sheet to progressive web app solution, and is now moving forward to use their own solution - Glide Tables to reduce the syncing cost that they have to pay Google, as Jeff suggested, and also enhancing apps’ performance.

I can’t disagree more! This is because you already have copying of custom actions, as it can be seen in the photos enclosed:
action copy of test action test

So, copies are already here, but tjey can be used exclusively within one tab for same type of component by duplicating this component! So it seems that this “feature” was designed in a way that Custom Action is physically writen within the component, and not separately and then referenced! Curiosity is, why then we need the name of this Custom Action? If we have the name, we should use this name wherever we want!

Your comment that copyiing will not function in every context correctly is correct, but also the actual copyiing of the component with custom action will not function correct, e.g. provided we change the source table! :slight_smile:

Probably you disagree, but lets agree that we disagree and see what brings the future! :slight_smile: