Hi everyone! Today's AppSheet Office Hours ep...

expressions
(Madeline Clarke [AppSheet]) #1

Hi everyone! Today’s AppSheet Office Hours episode was a continuation of last time’s driver dispatch app. We went more in-depth on topics such as references, integration, and workflow rules.

Here’s the list of topics: Recap of the previous episode | 3:10

My app will have clients as users. They don’t have any authentication service, so how can I create a secure application for them? | 14:54

How to customize the app’s behavior | 16:30

Zapier webhook workflow rule demo | 26:45

Do you have an integration with Zapier so that AppSheet shows up inside of Zapier? | 31:24

Say a customer wants to integrate with their tax service tool – do we have integration with tax services so that they can pull reports from the app and then send to the tax company? | 32:20

How to customize the automatically created Map view | 35:53

I have both pickup and delivery. Do you recommend separate apps for pickup and delivery each? | 43:47

From my experience, the info sent through AppSheet by webhooks is in JSON format. | 46:26

I have two tables, one where a driver is allocated a job and then they go to collect the item. When they arrive they need to quickly capture the name of the person they collected it from and their signature. The second table is for delivery. When they deliver at the other end, they again need to collect the name and signature of the person to whom they are delivering the item and save it, with the status automatically updated to “delivered”. What’s the easiest way to accomplish this in AppSheet? | 47:17

Is there a way to use the map feature for routing information? For instance, can it show travel time and traffic? (Follow-up) | 53:26

The HERE() expression automatically brings the location of the device in lat-long coordinates, but can it also get the address? | 55:24

We are trying to develop a typical process engineering line based on AppSheet. Each row is a process line where each process line has, for example, a design temperature. Sometimes, it’s necessary to copy the same design temperature to many different rows. It’s simple when you work on the spreadsheet, but how can I do this in AppSheet? | 57:12

If I have a location in lat-long coordinates, is there a way to calculate the closest property address? | 1:00:13

(Stephen Mattison) #2

TYTY!

(David Jones) #3

Hi.

I submitted the question about automatically updating collection/delivery times and status based a driver obtaining a name and signature .

I wasn’t able to watch live so have just seen the video https://www.youtube.com/watch?v=QYcGIjPoN9c&t=47m17s.

You didn’t quite

get what I meant with the question - my fault probably as I mentioned two tables which is rubbish!!

There is one table that contains the jobs and related tables for drivers, locations, products etc.

Sorry if that confused you!

Collection/Delivery Name - you said this was already there because of the link to customers.

But with most dispatch apps you’re delivering to a reception or similar so it’s important to get the name of the actual person you handed the delivery over to and get their signature.

So I have those as columns for both the collection and the delivery.

The real point of my questions was to try and make the whole thing as quick as possible for the driver to use.

At the moment they arrive at the collection location and have to select the job then edit it.

Then they change the status to Collected - they have to scroll down the page until they find the fields for collection time, collected from name and collected from signature.

They update all that and then save.

They do the same thing at the delivery location.

All of this takes time and is prone to mistakes e.g. sometimes they forget to change the status and just scroll down to the name/signature.

So what I’m really trying to achieve is:

1 - Make the view they interact with just contain the minimum of information that they need for the collection or delivery i.e. get to the name and signature fields without masses of scrolling down, but still show them enough information to confirm they’re dealing with the correct record.

2 - Update the status and timestamp automatically if they have obtained the appropriate name and signature.

I have timestamp columns for both collection and delivery and the status changes from New Job then to Collected then to Delivered.

I’ve tried using actions without success and I’ve struggled to use quick edit fields as a means of limiting what the driver sees and interacts with.

I hope this clarifies what I was meaning!!

Any tips or pointers would be gratefully received.

(Stephen Mattison) #4

@David_Jones one simple suggestion is to use show columns and Page headers to split your long table into several sections. This helped streamline my similar app greatly. Now my scheduling is all at the top and I can quickly scroll to the bottom of that page to finish scheduling, then when I get to the job I can quickly click Next to jump to the next page which contains all of the on-the-job columns. Sounds like you are looking for something a little more complicated but this should really help you.

#5

Hi @David_Jones, Like Stephen said, using a combination of actions, show if and tabbed form may help get you there a bit quicker. If you have a grouped action on your delivery detail that marks it as delivered and the changetime stamp fires then takes the user to the form to add the signature. You can get to the signature by having an action EFFECT > Edit this row. Put the actions into a grouped action so they fire one after the other.

(David Jones) #6

Thanks @Lynn .

I’ve tried using grouped actions but keep hitting barriers with them because of the Required If columns.

I may be wrong but the way it seems to work is that each action fires and as part of that it will attempt a save of the record and that fails if the relationships between the various Required If columns aren’t all in order at the point that it saves.

However, I haven’t tried using the EFFECT Edit This Row as one of the actions.

If I have that as the first action won’t the user be forced to save the record themselves?

And will control then pass back to the next action?

I’ll experiment.

(David Jones) #7

Hi @Lynn

I’ve just tried your suggestion with the grouped action but without success.

Here’s what I did:

I already have a change timestamp column that will record when the status changes to Collected.

I created an action called Get Collection Name.

This Edits the row.

This is hidden. I created an action called Set Status To Collected.

This is hidden.

Then I created a Group Action called Record Collection which only shows if the status is Job Allocated.

This group action runs Get Collection Name followed by Set Status To Collected.

The theory is that the user edits the row and gets the collection name and signature.

When they save, the Status action should run and because the status changes to Collected the Change Timestamp will get recorded.

That’s the theory but what actually happens is the first action fires and allows me to edit the row and get the collection name and signature, but when I save, that’s it.

The next action doesn’t run so the status doesn’t change and the timestamp doesn’t update.

I’ve tried swapping the order round but that fails because I have a Required If condition on Collection Name and Signature if status is set to Collected.

So when the Set Status To Collected action fires there is an error when the background save is attempted because those constraints are breached.

Now I guess I could remove the Required If but then that means a driver could get lazy and not get the name and signature.

It’s a catch 22 :frowning:

#8

Hi @David_Jones I see what you mean. I tried my actions with the required if and I had the same problem.

I wonder if there is

reason behind this or if it is a bug. Show if works

but required if doesnt