META POST: Deep Links & URL Parameters

META POST: Deep Links & URL Parameters

This post is a collection of other posts and AppSheet support docs relating to Deep Links and URL Parameters. Please feel free to post links to additional tips below and I will add them to the main post.## Deep Link vs Deep Link Expression

Deep Link: Link to a specific app view. Can be to a single row, full table, filtered-set of rows, pre-filled form, etc.
Deep Link Expression: Formula that takes one or more inputs, and outputs a Deep Link.

The output is URL Encoded


URL Parameters

Deep Links form a complete link to a specific app view. They contain enough info to get you to the right view, but there are optional parameters that could be included to modify that view.

Below is a list of some common URL parameters with links on how to use each one.

&at=NOW()+1

Force sync when navigating to a view. (See last line of support doc)

&quickedit=true

Open a view in Quick Edit

[Deep link and quick edit activation](https://community.appsheet.com/t/deep-link-and-quick-edit-activation/15511/14) Questions

I wonder if this would work… CONCATENATE( LINKTOFILTEREDVIEW( “Inventory”, IN([Product Code], LIST(“100001”,“100002”)) ), “&quickedit=true” )

&group=

Group any table view by any column without editing the view definition

[Create Dynamic Links to Group the Same Table View BY ANY COLUMN!](https://community.appsheet.com/t/create-dynamic-links-to-group-the-same-table-view-by-any-column/35142) Tips & Tricks ?

Table views (and a few other types) have a ‘Group by’ option, to group rows by a certain column. But if you wanted to view the same set of rows with a different grouping, you have to create a new view for each ‘Group by’ setting. Or do you? I noticed ‘&group=’ in the URL of one of my views, followed by percent signs and other parameters (URL encoding). [Screen Shot 2020-11-25 at 2.08.40 PM] The decoded format looks like this: &group=[{“Column”:“county_name”,“Order”:"Asc…

&defaults=

Alternate method of pre-filling a form (instead of LINKTOFORM() )

[Convert DEEPLINKS to Full/External URLs for Use in PDFs/Emails or Pre-Filled Form Links](https://community.appsheet.com/t/convert-deeplinks-to-full-external-urls-for-use-in-pdfs-emails-or-pre-filled-form-links/30060) Tips & Tricks ?

DEEPLINK expressions like LINKTOFORM() return a ‘deeplink’ to an app view, but not a full browser URL. These links won’t work in an email or PDF. They only navigate within/between AppSheet apps. I needed a way to generate full-URLs for use in an email body, and take values from a row in a secure app to generate pre-filled links to a form in a public app. Basically, LINKTOFORM(Pre-filled values) but with a valid, full-URL that could be used in an email. I’ve broken the formulas down into sep…


Thanks to @Fabian for the idea, and to anyone who would like to contribute.
Please link to an existing post, or create a new post for your example. I’d like to keep this post as a collection of links, rather than go in-depth on any one tip.

20 Likes

The sync was/is the biggest game changer!

3 Likes

I just learned about quickedit=true, and just found group= a few days ago. I know there are more, and it would be great to have them all in one place!

Another one is fasttable, but I don’t know how it would be useful to apply manually. It’s just a fallback when no other view applies.

4 Likes

Map views have all sorts of params…

3 Likes

Grant_Stead:

The sync was/is the biggest game changer!

Legit.

LINKTOFORM() was another huge boon as well; and it’s baby brother the background record creation action type.

2 Likes

I still wish that we could “linktoform” to an existing form… I wish we could add the record id peram to it…

1 Like

Grant_Stead:

“linktoform” to an existing form

???

LinkToROW([RowID], “Form_View”)

???


If you’re meaning you wish we could add data at the same time… yeah.

But you can use other actions to change data before you open the record

I do this in many apps, as I typically have a column called [Form_Type] that I use to hold temporary flags which I use to based which columns should be shown or not.

For instance: “New_Whatever” is something I’ll set the initial value to, then hide a bunch of stuff for the first time the record is made. I have another action that clears this flag, and then others that put other flags there based on the context I need to access the record.

2 Likes

Can’t modify columns with linktorow
Hijacked thread… LOL

1 Like

Thank you so much @GreenFlux for this thread. I knew you are the right person for that
I like to add some points.

Forced sync as mentioned in the support doc is not working for me.
You already added the “+1”

[Dynamically Create X Number of Child Records from Parent EnumList with Only 2 Actions!](https://community.appsheet.com/t/dynamically-create-x-number-of-child-records-from-parent-enumlist-with-only-2-actions/15502/12) Tips & Tricks ?

You are right, but it says CONCATENATE(“MyApp-123#at=”, ENCODEURL(NOW())) without the +1 at the end. In my Apps it’s only working when I add the +1 at the end.

Zoom level in Map View

[Optionally change the default zoom level for map view](https://community.appsheet.com/t/optionally-change-the-default-zoom-level-for-map-view/18713/8) Feature Requests

Hi @tsuji_koichi today I found something that may help you. In Browser Version I saw the URL contains a &_zoom=1. Login - AppSheet The XY map view opens up showing the whole Image. When you change it to &_zoom=2 or &_zoom=3 …

Preselect a row or a pin
You can use the combination of LINKTOFILTEREDVIEW() and “&row=”

[Maps displaying multiple pins](https://community.appsheet.com/t/maps-displaying-multiple-pins/8601/7) Questions

Hi @dan_R Yes, this is the normal behavior. But I understand that this is not a good solution for your case. You can do this: Copy the System Generated Action “View Map (Trl Location)” Set the original to “Do not display” Edit the copy’s target link to something like: CONCATENATE( LINKTOFILTEREDVIEW(Address Map View,[ID]=[_THISROW].[ID]), “&row=”, ENCODEURL([_THISROW]) ) This will open a map with only this location. [Pin] See my sample App “Map & XY” in my portfolio: http…

[Best Way to Navigate Between UX Deck Rows Using LINKTOFILTEREDVIEW() or Similar?](https://community.appsheet.com/t/best-way-to-navigate-between-ux-deck-rows-using-linktofilteredview-or-similar/11444) Questions

QUESTION: Is there a way to perform a simple, Action-based navigation between rows in the Detail UX, without growing the stack of “Back” (<-) button navigations? I am trying to use Actions as a way to navigate between table rows within a Deck UX constrained by LINKTOFILTEREDVIEW(). It’s like pressing the chevron buttons at the left and right of the Detail UX. There are additional actions I want to perform when this happens, so this why I am pursuing my own next/previous button. I also want t…

Defaults
Can be used in every view type, not only form view.

[QR Code Versatility](https://community.appsheet.com/t/qr-code-versatility/13533/4) Questions

You can do that when saving this kind of value to your NFC tag… this is a formula in virtual column which is converting the existing Key column’s value for you tag. CONCATENATE(‘www.appsheet.com/start/2sd9c20b-7b70-4a42-a3cb-496b93e98c9f#table=Rooms&page=detail&defaults={“’,‘ROOM_ID’,’”:“’,[ID],’”}’)

refresh=1 and wipe=1

[Public portfolio](https://community.appsheet.com/t/public-portfolio/10290/6) Questions

Sure. The preview url looks like this for one specific app — you can replace with your own app id (from the Users → Links pane of the app editor): https://www.appsheet.com/preview/0503c89d-acf6-4702-9cc0-34132b7a74cb?refresh=1&wipe=1&preview=1&version=1.000196 Note that this is almost identical to the /start/ link used to run the app in a browser. refresh=1 forces the app to sync each time to get the latest definition wipe=1 removes any existing state each time the page loads You don’t nee…

[Simple to do list](https://community.appsheet.com/t/simple-to-do-list/21719/11) Questions

Yes it will do that. You just need to add your app link with refresh & wipe before starting the Refresh. This is the syntax sample… https://www.appsheet.com/start/7441569a-d3f9-48e1-88b5-132aeec9fe8e?refresh=1&wipe=1

7 Likes

Fabian:

Preselect a row or a pin> You can use the combination of LINKTOFILTEREDVIEW() and “&row=”

Forgot about that one! Another all star!

3 Likes

I found a new one to add to the list…
Table View already opened up to multiselect mode
linktoview(“Documents Filtered”) & “&selected=%5B%5D”

[Appsheet-drivemerge: a 2020 stocking stuffer](https://community.appsheet.com/t/appsheet-drivemerge-a-2020-stocking-stuffer/36840) Tips & Tricks ?

Hello All. Here’s a little stocking stuffer for you to play with while you wait for Santa to bring all your presents. Whether you’ve been naughty or nice, this should be a fun treat. Let’s start with a business scenario: You are happily using Google Drive to store all of your companies’ contents. This includes Docs, Sheets, Slides, Drawing, text files, zip files and anything else. On a frequent basis, you need to send various documents to trading partners outside of your organization. You can…

3 Likes

Grant_Stead:

linktoview(“Documents Filtered”) & “&selected=%5B%5D”

Or:

linktoview(“Documents Filtered”) & “&selected=" & URLENCODE("[]")

It appears the selection list can be constructed thusly (untested):

URLENCODE('["' & SUBSTITUTE(FILTER(...), ",", '","') & '"]')

8 Likes

Hi, can you explain more about this?

1 Like

@1111 I assume you’re asking about the [Form_Type] column I mentioned:

MultiTech_Visions:

I typically have a column called [Form_Type] that I use to hold temporary flags which I use to based which columns should be shown or not.> > For instance: “New_Whatever” is something I’ll set the initial value to, then hide a bunch of stuff for the first time the record is made. I have another action that clears this flag, and then others that put other flags there based on the context I need to access the record.

I will create a new post about that in the near future, and link it here.

3 Likes

Here is another one using _currentLat= and _currentLng=.

[Open map on current location HERE() and adjust zoom level](https://community.appsheet.com/t/open-map-on-current-location-here-and-adjust-zoom-level/38996) Tips & Tricks ?

There is no way to jump to the current location in a map, like we have in google maps. [image] I found a workaround, using an Action. [image] Here is the Expression: LINKTOVIEW(“Your_Map_View”) &“&_currentLat=”&(LAT(HERE())) &“&_currentLng=”&(LONG(HERE())) &“&_zoom=17” This will open your Map view centered to your location. You can adjust the zoom level as you need it. From 0 to 21. Nothing else is needed, no User Settings, no Virtual Column. This action can be placed in a Detail / Deck…

6 Likes

A nice one from @LeventK

[Returning to previous view](https://community.appsheet.com/t/returning-to-previous-view/26265/5) Questions

Provided you are not familiar with URLENCODE/URLDECODE, you can simply achieve the same with this: LINKTOVIEW( ENCODEURL( “#appName=TaskApp-861308&group=[{“Column”:“Project+ID”,“Order”:“Ascending”},{“Column”:”_RowNumber",“Order”:“Ascending”}]&page=deck&sort=&table=Tasks&view=Tasks" ) )

2 Likes

Is it possible to use a url to force the mobile app to refresh?
Or is it possible email/text a deeplink that is clickable (as in clicking on it will open the app, force refresh, and display a view)?

Hi @Behram_BASHIR yes this is possible. You can use a forced sync as mentioned above.

GreenFlux:

&at=NOW()+1> > Force sync when navigating to a view. (See last line of support doc)> > 1X_05f4a2145f98a218028074e420f74174ca35c222.png> help.appsheet.com> > > > ### App Column Type (Deep Link)> > Learn how to use deep links to navigate to another view in the same app, or in another app.

Fabian:

Forced sync as mentioned in the support doc is not working for me.> You already added the “+1” > > > You are right, but it says CONCATENATE(“MyApp-123#at=”, ENCODEURL(NOW())) without the +1 at the end. In my Apps it’s only working when I add the +1 at the end. thinking

3 Likes

is the support doc still wrong because it has NOW() instead of NOW()+1?

Is there a way to set a view title through the URL?
This would be very handy for my case of setting a context sensitive title for a filtered table view deep link jump.

Is there an appsheet help doc about defaults= syntax?