Several issues as a newcomer to Appsheet Automation

I’m fairly new to Appsheet (just a few months use) and while I was initially impressed with what could be achieved in a short amount of time, I now keep running into roadblocks caused by the lack of very basic functionality, particularly in Appsheet Automation.

I can understand Appsheet wanting to keep things as low-code/no-code as possible, but this shouldn’t be at the expense of basic functions such as iteration. A brief, but non-exhaustive, list of issues I have yet to find a suitable method for are:

  1. No simple equivalents to “for” or “while” loops for performing the same action on multiple rows/fields.

  2. No basic time delay in Processes. There is a Wait For, but it appears to only trigger on a Data Change or Schedule, not just a simple XX seconds wait.

  3. No ability to create temporary variables within the process scope, e.g. generate a string for a filename, or define an array of folders to be created. As a workaround, I create columns for these variables in the referenced table, but this is clunky and wasteful as they do not need to be stored.

  4. Results output by a sub-process that has been called appear to only be available in the calling process. How do you pass this information to sub-processes/tasks?

  5. Working with multiple data tables in a process. I can’t quite understand why Processes are intrinsically linked to a particular data table. It seems to be either unnecessarily limiting or I’m simply not understanding the way Appsheet Automation is supposed to work. Since I can’t find a way to easily pass data between processes (down to the Task level), this makes it difficult to work with multiple data sources at once to generate new data.

  6. A lot of basic Bots just consist of an Event and a Task, yet it is still necessary to create a Process as a container. Is there way to call a single Task directly from an Event to save time and make things cleaner?

  7. No support for GET requests or parsing/storing JSON responses with webhooks. A common process for us is to GET an access token from an API and then use that as authentication for subsequent requests. As a workaround, we currently use Power Automate to grab access tokens and send them to a table in Appsheet via the Appsheet API. We also use Power Automate to send back metadata on files that are created in SharePoint, since Appsheet cannot read it from the response to the POST requests.

  8. Can’t find a way to send binary data via webhooks.

Are there any suggestions for the above points?

Thanks,
Michael

4 Likes

Michael, Hi! I understand where you are coming from. You sound as if you have some coding background. As you know, AppSheet is NOT a typical coding platform. You have to “unlearn” some of the things you learned from procedural or object-oriented languages. Things are done differently but just about everything you’ve listed is either doable (just in a different way than you are used to) OR not suited for AppSheet. It might help to know that AppSheet is relatively young platform 6 - 7 years old formally. Their target is Business systems and have taken a stance to include features that serve the majority. They are NOT trying to build a system to allow ALL developers to do ANYTHING they need so not all software capabilities are included in the platform.

With the few business systems I have built, I have only needed to go off AppSheet platform for one thing - email scraping.

Which brings up the point, with today’s easily integratable systems, you should not expect that AppSheet is the ONE system to do it all. As with anything, it is best to have the right tool for the job. Sometimes that may not be AppSheet.

4 Likes

Hey Michael,

Thanks for using AppSheet, let me see if I can answer some of these questions.

  1. You can use the Reference Action to execute an action on a set of rows, Actions: The Essentials | AppSheet Help Center. Using that together with the Composite action can be pretty powerful.

  2. We will be adding time delay in the coming weeks but not in second granularity, it will be in tens of minutes. This is intended to be used in order to allow an escalation path for the wait step. For example if the approver does not approve within 2 days, do this. Can you tell me a little more about your usecase ?

3 and 4. Results of a sub process can be used in other steps (IfElse/Wait/CallProcess). The notation in the expression [StepName].[VariableName] Step: The Essentials | AppSheet Help Center.
In the coming weeks we will enable using these in actions and tasks as well. So to answer Q 3 that would allow you to create variables using a child process and use them anywhere in the calling process.

  1. Processes that are triggered by a data change event have the row that changed as part of the execution context. You can call sub processes that are able to modify data in other tables or use the reference action mentioned in Q 1. Scheduled Events are generic and have no table affiliation and allow you to create a process with no table affiliation however these processes are restricted from making data-action changes that require a row in context.

  2. If you build your bot from the Bot tab you can build everything from one place. Create a bot, select/create the event, same for the process and add the email step. There is no need to create the event or process separately in the event and process tabs.

  3. Get requests are not currently supported, if you would like to discuss the usecase in more detail I would be happy to understand the need.

  4. Sorry, we do not support that at the moment.

Hope this helps

2 Likes

Hi John,

Thanks for your input.

I have some coding background but I am far from being a developer. My colleague, who first adopted Appsheet for our department several years ago, does not have a coding background but still finds the automation side of Appsheet non-intuitive. To take the looping issue above as an example, searching for simple terms such as “loop”, “repeat”, “iterate”, and “iteration” on help.appsheet.com does not bring up any instructions. This article mentions

Looping over many records and call a task for each of them

but does not describe how. Meanwhile, this post on the forums shows a lot of people are having the same issue.

I totally agree that Appsheet does not need to be the one system to do it all. However, to avoid that being a limitation it is therefore important that integrating with other platforms is as easy and flexible as possible. This is why I believe having fully-featured HTTP request functionality is necessary for the platform (related to points 7 and 8 in my list).

I only have experience with a few other low/no-code and automation platforms, i.e Power Apps/Power Automate, Zapier, and Integromat. All of these allow you to easily build your own HTTP requests and parse the responses. Browsing the support sections for Betty Blocks and OutSystems indicates that they have more fully-featured web API functionality too.

I looked at using Integromat/Zapier for sending PDFs uploaded via an Appsheet app to SharePoint and receiving a Document ID back but, as far as I could work out, I would need to:

  1. Encode the file as Base64 using Google Apps script (or some other service)
  2. Store this in an Appsheet table (but ideally a temporary variable)
  3. Send that to the webhook in Integromat/Zapier
  4. Use Integromat/Zapier to forward that to SharePoint as a Base64-encoded binary stream
  5. Retrieve the Document ID from the response and send it to Appsheet via the Appsheet API

This is very messy and would be avoided if Appsheet’s HTTP request system was more comprehensive.

While I’m not completely against the idea of using third party services, I agree with all the points raised in this post. We also have a fifth issue with the addition of third party services; getting authorization to integrate with such services is a very lengthy process at our university. Granted, this is a problem caused by our university policy, but I expect others may have similar restrictions.

1 Like

I understand from where your opinion and frastration is coming from.

Yes, it is surely useful HTTP request for appsheet function to get more poweful, but I also understand how they are so challenging tasks.

Even taking just single subject of enabling GET varb http request feasibility, it immidietely become complex subject. For instance, the response body (usually JSON format) varies by API to API. Then question is how to standardize those unique response body to store to Appsheet (source table).
Even for base64, yes, we can write script to conver URL based Image onto base64, but AppSheet app is usually using Google spreadsheet where we have limit to 50,000 characters to store value for each independent cell while base64 converted images usually have more than that. How to store them?

Dont take me wrong, as i m with you, I hope AppSheet manage those complex stories.

I m with AppSheet for the last past 4 years, but I can tell you the new feature are kept added (regardless that we are happy with those new feature or not), but i stay hopeful that our hope may/will come true sometime in the future. AppSheet is still under the development.
We see many problems, especially when it comes to new additional feature is introduced where we see problems.

I stay patient to provide the feedback to correct issues I observed, but just simply because of such a hope. The question is if we are able to stay patient or in belief or not.

No doubt, I prefer the perfect worlds, but it merely happens on this earth unfortunately.

At the last, we, this comunity, needs helps from skilled contributer like you to make the platform far better. Hope to see your contribution.

4 Likes

Hi Dan,

Thanks for the response. A few follow up comments on these points.

  1. What is the simplest way to go about looping over a set of rows and calling a webhook with data from each row in turn? Do I need to basically force a data change on a dummy column for each row in a table to just get the bot to trigger multiple times? Can you point me to some examples of using the Reference Action and Composite functions?

  2. The time delay use case was mostly for waiting for an action to complete in an external service, e.g. most actions would complete in well under a minute so 1 minute would be a suitable wait time. However, I’ve now got a callback working using Power Automate to detect the completion of changes in SharePoint and send “messages” (actually storing data in a table) back to Appsheet via the API. So, the time delay is less immediately important to us now.

  3. Look forward to being able to use the created variables throughout all levels of the process!

  4. Are there any examples you can share of Processes that pull data from two (or more) separate tables and perform tasks on them? I’m guessing it may be a case of me having to more appropriately structure the data such that the same foreign key is present in the target tables and I can then pull the data using expressions and pass the result to a child Process.

  5. Being able to create Events and Processes in a single place wasn’t what I meant. I commonly find myself wanting a single Task to run when an Event happens. At the moment, I create the Bot, choose the Event, and then want to just choose a single Task. However, I still have to create a dummy Process with a dummy Step to run the Task I want. The Process and Step are effectively redundant (I just give them the same name as the Task). This is a minor issue, but when you have a lot of Bots running single Tasks, it really adds time creating the unnecessary processes (which then also clutter up the Processes tab).

  6. We are connecting to our university SharePoint site using the REST API. I’m still quite new to web APIs and do most of my testing in Postman. While many requests to SharePoint can interchangeably use POST in place of GET, some of them cannot. Even for those that are interchangeable, I still need some way of parsing the responses so I can insert the data into an Appsheet table. I basically want to be able to have the ability to dynamically pull data from a wide range of sources. For now, I use Power Automate as an intermediate to perform the requests, extract the information, and forward it to Appsheet.

  7. An interesting thing with sending PDFs to SharePoint via Appsheet webhooks is that I can successfully send PDFs that are created from Google Docs templates. This suggests that Appsheet already has all the underlying functionality to be able to send files as a Base64-encoded binary stream, but it is not exposed to the users. Is there any chance this functionality could be exposed to allow us to point the webhook at the file we want to send instead?

Agreed. A major reason why we have stuck with Appsheet, besides the time invested by my colleague and the time/expense in migration, is that the support team are responsive. Most recently, we were glad to see that client certificates were implemented for MySQL database connections, allowing us to finally consolidate our backend data.

I certainly also remain hopeful that Appsheet adds new features and develops at a fast pace. Hopefully some of that effort is directed toward making the platform more extensible, so as to allow the community to help accelerate the development and rollout of new capabilities. I see quite a lot of posts on here using Google Apps Script, but not sure if there is any formal integration in Appsheet or whether there are plans to allow extensions using plain Javascript.

I see the improvement of webhooks as a relatively low-hanging fruit given that it is already quite well-developed.

1 Like

I feel you!