Hi,
i'd like to create an action button from AppSheet1 to show a table view on a AppSheet2
"appsheet://<AppSheet2-111111>/table/<AGENDA>/view/<TUTTI>?filter=MYRECORDSID=[_THISROW].[ID]"
Where
AGENDA is the table of my AppSheet2 (Google Sheet)
TUTTI is the Table View in my AppSheet2
MYRECORDSID is the Column in my AppSheet2 that contains records with ID of my AppSheet1
I receive this error message (i've access to my 2Appsheet App with my same account).
Since you want to filter TUTTI (a table view in AppSheet2) based on MYRECORDSID, use:
LINKTOFILTEREDVIEW("TUTTI", "MYRECORDSID" = [_THISROW].[ID])
Explanation: LINKTOFILTEREDVIEW("TUTTI", "MYRECORDSID" = [_THISROW].[ID])
"TUTTI" → The table view in AppSheet2.
"MYRECORDSID" = [_THISROW].[ID] → This filters the table in AppSheet2 to show only rows where MYRECORDSID matches the ID from AppSheet1.
How to Open AppSheet2?
However, LINKTOFILTEREDVIEW() only works within the same app. To open AppSheet2, you'll need to combine it with HYPERLINK() or construct an AppSheet deep link manually.
Try this in AppSheet1:
HYPERLINK(
"https://www.appsheet.com/start/<AppSheet2_App_ID>#view=TUTTI&table=AGENDA&filter=MYRECORDSID=" & ENCODEURL([_THISROW].[ID]),
"Open Filtered View in AppSheet2")
In action i insert External go to a website correct ?
Because if i leave go to another Appsheet i receive this error in Expression form.
The expression is valid but its result type 'Url' is not one of the expected types: App
Changing in External go to a website now receive this error:
The URL was: start/%myidapp%3E
App Template '<fd541e46-a529-4381-beb1-b217f51e770a>' not found.
Just wonder i link to TUTTI that is my table view, is it correct or i need to create a slice in it ?
Yes, you're on the right track, but there are a few things to check and correct in your approach. Let's go through them step by step.
The format you're trying to use (appsheet://<AppSheet2-111111>/table/<AGENDA>/view/<TUTTI>?filter=MYRECORDSID=[_THISROW].[ID]) is not correct.
For navigating to another AppSheet app, the correct format is:
LINKTOAPP("AppID", LINKTOVIEW("TUTTI", "AGENDA", [MYRECORDSID] = [_THISROW].[ID]))
However, since you are using an external link (Go to a website), the correct structure is:
CONCATENATE(
"https://www.appsheet.com/start/",
"Your-App-ID",
"#view=TUTTI&table=AGENDA&filter=",
ENCODEURL("MYRECORDSID = " & [_THISROW].[ID]))
This error usually happens if:
Try manually opening:
https://www.appsheet.com/start/YOUR-APP-ID#view=TUTTI
Ok, we're quite arriving at the solution (i hope) 🙂
Try manually opening:
https://www.appsheet.com/start/YOUR-APP-ID#view=TUTTI
Done it it works properly
Now the AppSheet2 is opened with the table view TUTTI but no records are displayed.
I've now created a slice in TUTTI view name it SLICETEST and insert this expression:
MYRECORDSID = [_THISROW].[ID]
And change the expression in action AppSheet1 as:
CONCATENATE(
"https://www.appsheet.com/start/",
"fd541e46blabla",
"#view=SLICETEST&table=AGENDA&filter=",
ENCODEURL("MYRECORDSID = " & [_THISROW].[ID]))
But still not works ... any more help please ?
I'm doing some test ...
ENCODEURL("MYRECORDSID = " & [_THISROW].[ID]))
seems not to have any effect ...
This is the URL i use:
CONCATENATE(
"https://www.appsheet.com/start/",
"fd541e46blabla",
"#view=TUTTI&table=AGENDA&filter=",
ENCODEURL("MYRECORDSID = " & [_THISROW].[ID]))
2. If i use instead the SLICETEST in the URL and i insert in Appsheet2
[MYRECORDSID] = [_THISROW].[ID]
no data are shown ...
CONCATENATE(
"https://www.appsheet.com/start/",
"fd541e46blabla",
"#view=SLICETEST&table=AGENDA&filter=",
ENCODEURL("MYRECORDSID = " & [_THISROW].[ID]))
A slice will ensure that the view (TUTTI) only shows records where MYRECORDSID matches the ID from AppSheet1.
Row filter condition:
[MYRECORDSID] = [_THISROW].[ID]
Now, modify your AppSheet1 action button to use this new slice.
If using "Go to a website", set this as the URL:
CONCATENATE(
"https://www.appsheet.com/start/",
"Your-App-ID",
"#view=Filtered_TUTTI_View")
If using "Go to another App", use:
LINKTOAPP("Your-App-ID", LINKTOVIEW("Filtered_TUTTI_View", "Filtered_TUTTI"))
All done (i use "Go to a website")
The table sliced view is open correctly but it's incredible still no records are shown in it ...
If no records are showing in your Filtered_TUTTI_View, let's debug step by step.
Go to Data > Slices > Filtered_TUTTI and confirm the row filter condition:
[MYRECORDSID] = [_THISROW].[ID]
Try changing the filter to:
[MYRECORDSID] = "123456"
Try changing the filter condition to:
IN([MYRECORDSID], LIST([_THISROW].[ID]))
or
IN([ID], SELECT(AGENDA[ID], [MYRECORDSID] = [_THISROW].[ID]))
Then Save & Check View Data Again.
Modify the AppSheet1 action Go to a website URL:
CONCATENATE(
"https://www.appsheet.com/start/",
"Your-App-ID",
"#view=Filtered_TUTTI_View&row=", ENCODEURL([ID]))
This forces AppSheet2 to open with a specific row.
Do you mean in the row filter for slice to click "test" in Expression assistant ?
In my case clicking on test all my records are shown of table AGENDA (in appsheet template)
I've rechecked every passage, no records still shown in table view
Just thinking: are we sure that the Slice of AppSheet2
[MYRECORDSID] = [_THISROW].[ID]
and in particulary ... [_THISROW].[ID] is correct here ?
We're in Appsheet2 and the value of [_THISROW].[ID] is the ID of AppSheet1 ... how Appsheet2 could know that value ?
Since AppSheet2 doesn’t automatically inherit the row from AppSheet1, we need to pass the ID manually in the URL.
Instead of using: appsheet://Your-App-ID/table/AGENDA/view/TUTTI?filter=MYRECORDSID=[_THISROW].[ID]
Use:CONCATENATE(
"https://www.appsheet.com/start/",
"Your-App-ID",
"#view=Filtered_TUTTI_View&row=",
ENCODEURL([ID]))
This ensures that when AppSheet2 opens, it knows which row (ID) to filter by.
Since we now receive the ID via the URL, update the slice filter like this:
[MYRECORDSID] = CONTEXT("RowKey")
Now in my AppSheet2 are shown all the records of my AGENDA table and not only the records that match:
[MYRECORDSID] = CONTEXT("RowKey")
Any more help please ?
Btw it's the first time that something finally appears in my Slice table view after all 🙂
Great! Now that records are appearing, it means AppSheet2 is at least opening correctly. The issue now is the slice is not filtering records correctly.
Your filter condition:
[MYRECORDSID] = CONTEXT("RowKey")
Problem:
Modify the slice filter condition in AppSheet2:
[MYRECORDSID] = ANY(SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT("RowKey")))
Why This Works?
If you expect multiple records (not just one), use this filter instead:
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT("RowKey")))
Why This Works?
Now, only the relevant records should appear! 🚀 Let me know if you need more tweaks.
Unfortunately still not works.
My scenario is to expect one or multiple records, so i've updated the slice filter as suggested (and tried also the other one):
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT("RowKey")))
All my AGENDA records are shown ... and not only the one with [MYRECORDSID] = (to my AppSheet1 key)
btw when you said Final steps when click on View Data in slice are shown all records cause probably there's no incoming deeplink to wake it.
And clicking the AppSheet1 action it shown all my records of my AppSheet1 not Appsheet2 ...
You're right! The issue is that CONTEXT("RowKey") is not being passed correctly when opening AppSheet2. This means the slice filter isn't receiving the ID and is therefore showing all records.
Let’s fix this step by step:
Step 1: Pass the ID Correctly in the Deep Link
Currently, your deep link might not be setting RowKey properly. Modify your AppSheet1 action to use this:
CONCATENATE(
"https://www.appsheet.com/start/",
"Your-App-ID",
"#view=Filtered_TUTTI_View&row=",
ENCODEURL([ID]))
Why This Works?
Step 2: Ensure AppSheet2 Uses RowKey Properly
Since we pass only one ID in row=, we need to store it in AppSheet2.
Step 3: Update the Slice to Use Selected_ID
Now, modify the slice filter condition in AppSheet2 (Filtered_TUTTI😞
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = USERSETTINGS("Selected_ID")))
Why This Works?
Now, when AppSheet1 sends the ID, AppSheet2 will store it and filter AGENDA records correctly.
Let me know if this works
I've to create Selected_ID here, i.e. at Option 9 or where else ?
When create the action don't have an option to Set
Here is the Solution FACE, Based on the screenshot shared, I see two issues:
Instead of using UserSettings, let's create a Global Table in AppSheet2 to store Selected_ID.
Step 1: Create a New Table to Store Selected_ID
Step 2: Modify the Deep Link in AppSheet1
In AppSheet1, update the deep link action: CONCATENATE( "https://www.appsheet.com/start/", "Your-App-ID", "#view=Filtered_TUTTI_View&row=", ENCODEURL([ID]))
This ensures AppSheet2 receives ID correctly.
Step 3: Create an Action in AppSheet2 to Store Selected_ID
Now, update the slice filter in Filtered_TUTTI:
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = ANY(SELECT(GlobalVariables[Selected_ID], [ID] = "1"))))
Why This Works?
Step 5: Set Action to Run on App Start
This method correctly transfers the ID and filters records in AppSheet2.
Oh Face, about the review, that’s still totally much appreciated. Please kindly reach out via: https://linktr.ee/love_lina I look forward to more close work with you.
You can contact me through https://linktr.ee/love_lina so we can talk better about your project because am not always online here
User | Count |
---|---|
16 | |
12 | |
8 | |
4 | |
2 |