FaCe
March 2, 2025, 10:32am
1
Hi,
i’d like to create an action button from AppSheet1 to show a table view on a AppSheet2
“appsheet:///table//view/?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).
@FaCe
Solution: Use LINKTOFILTEREDVIEW
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”)
Steps to Make This Work:
Find Your AppSheet2 App ID:
Go to AppSheet2 → Click on “Manage” → “Deploy” → Copy the App ID from the URL.1. Update the Link:
Replace <AppSheet2_App_ID> with the copied App ID.
1 Like
FaCe
March 2, 2025, 1:19pm
3
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 ‘’ 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 ?
@FaCe
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.
1. Use the Correct Deep Link Format
The format you’re trying to use (appsheet:///table//view/?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]))
2. Replace “Your-App-ID”
Go to AppSheet2 > Manage > App Info and copy the App ID.
Replace “Your-App-ID” in the formula above.
3. Ensure Correct Action Type
Do NOT use “Go to another App” because AppSheet expects an App ID reference, not a URL.
Instead, use “External: Go to a Website” and insert the URL from Step 1.
4. Debugging the “App Template Not Found” Error
This error usually happens if:
The App ID is incorrect.
The View (TUTTI) does not exist.
The Table (AGENDA) does not exist or is not accessible.
Try manually opening:
https://www.appsheet.com/start/YOUR-APP-ID#view=TUTTI
If it doesn’t work, check that the view name (TUTTI) matches exactly.
If it still doesn’t work, you might need to create a slice in AppSheet2 that filters only MYRECORDSID = [_THISROW].[ID], then link to that slice.
1 Like
FaCe
March 2, 2025, 2:27pm
5
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 ?
FaCe
March 2, 2025, 3:13pm
6
I’m doing some test …
If i leave VIEW TUTTI, all my records of my table AGENDA are shown, so that last part of the link:
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]))
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]))
How to Create a Slice in AppSheet2 for Filtering Records
A slice will ensure that the view (TUTTI) only shows records where MYRECORDSID matches the ID from AppSheet1.
Step 1: Create a Slice in AppSheet2
Go to AppSheet2
Navigate to Data > Slices
Click “+ New Slice”
Set the following:
Slice Name: Filtered_TUTTI
Table: AGENDA
Row filter condition:
[MYRECORDSID] = [_THISROW].[ID]
Select all columns (or only the necessary ones for the view).
Save the slice.
Step 2: Create a View for the Slice
Go to UX > Views in AppSheet2
Click “+ New View”
Set the following:
View Name: Filtered_TUTTI_View
For this data: Filtered_TUTTI (the slice you just created)
View Type: Table, Deck, or any format you prefer
Save the view.
Step 3: Update the Deep Link in AppSheet1
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”))
Step 4: Test the Button
Click on the button in AppSheet1.
Ensure it opens AppSheet2 and correctly filters the records in TUTTI.
1 Like
FaCe
March 2, 2025, 4:40pm
8
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.
1. Check the Slice Filter Condition
Go to Data > Slices > Filtered_TUTTI and confirm the row filter condition:
[MYRECORDSID] = [_THISROW].[ID]
Possible Issues:
Does MYRECORDSID actually store the ID from AppSheet1?
If not , check the column data in AGENDA.
Try changing the filter to:
[MYRECORDSID] = “123456”
(replace 123456 with an actual ID from AppSheet1)
If this works, then THISROW might not be passing correctly from AppSheet1.
2. Check if the Slice Contains Records
Go to AppSheet2 > Data > Slices > Filtered_TUTTI.
Click View Data (below the filter formula).
If it’s empty, the filter isn’t working.
Solution if No Data Shows:
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 .
3. Check the AppSheet View Settings
Go to UX > Views > Filtered_TUTTI_View **.**
Ensure For this data is set to Filtered_TUTTI (the slice).
If the data source is empty, try changing to AGENDA just to see if it works.
4. Test Manually in AppSheet2
Go to AppSheet2 > Data > AGENDA > View Data .
Find a row where MYRECORDSID should match an ID from AppSheet1.
If no matches exist, AppSheet1 is not passing the ID correctly .
5. Update the Deep Link (Force Pass ID)
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.
1 Like
FaCe
March 2, 2025, 5:15pm
10
2. Check if the Slice Contains Records
Go to AppSheet2 > Data > Slices > Filtered_TUTTI.
Click View Data (below the filter formula).
If it’s empty, the filter isn’t working.
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
FaCe
March 2, 2025, 8:12pm
11
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 ?
Solution: Pass the ID in the Deep Link
Since AppSheet2 doesn’t automatically inherit the row from AppSheet1, we need to pass the ID manually in the URL.
Step 1: Modify the Deep Link in AppSheet1
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.
Step 2: Modify the Slice in AppSheet2
Since we now receive the ID via the URL, update the slice filter like this:
[MYRECORDSID] = CONTEXT(“RowKey”)
CONTEXT(“RowKey”) retrieves the passed row ID from the deep link.
MYRECORDSID should match the ID passed from AppSheet1.
1 Like
FaCe
March 3, 2025, 6:51am
13
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.
Why Is It Showing All Records?
Your filter condition:
[MYRECORDSID] = CONTEXT(“RowKey”)
Problem:
CONTEXT(“RowKey”) only works if AppSheet2 is opened with a specific row.
But your deep link (#view=Filtered_TUTTI_View&row=…) only passes one row, while you need to filter multiple records (i.e., all rows in AGENDA that match the given ID).
Fix: Use ANY(SELECT(…)) to Pass the ID Properly
Modify the slice filter condition in AppSheet2:
[MYRECORDSID] = ANY(SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT(“RowKey”)))
Why This Works?
SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT(“RowKey”)) retrieves all IDs that match the passed ID.
ANY(…) ensures we compare it correctly against [MYRECORDSID].
Alternative Fix: Use IN() for Multiple Matches
If you expect multiple records (not just one), use this filter instead:
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = CONTEXT(“RowKey”)))
Why This Works?
This allows multiple records to be included in the slice.
Final Steps
Update the Slice filter in AppSheet2 (Data > Slices > Filtered_TUTTI).
Click View Data in the slice settings and confirm only matching records appear.
Test by clicking the button in AppSheet1 and see if the correct records appear in Filtered_TUTTI_View.
Now, only the relevant records should appear! Let me know if you need more tweaks.
1 Like
You can contact me through https://linktr.ee/love_lina so we can talk better about your project because am not always online here
1 Like
FaCe
March 3, 2025, 12:25pm
16
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?
&row= tells AppSheet2 which specific record ID to focus on.
ENCODEURL([ID]) ensures the ID is properly formatted.
Step 2: Ensure AppSheet2 Uses RowKey Properly
Since we pass only one ID in row=, we need to store it in AppSheet2.
Create a User Setting for the Passed ID
Go to AppSheet2 > Data > User Settings
Create a new column:
Name: Selected_ID
Type: Text1. Modify AppSheet2’s Deep Link Behavior
Go to AppSheet2 > Behavior > App Actions
Create a new action:
Name: Set Selected_ID
For this data: Usersettings
Action Type: Data: set the values of some columns
Set this column:
Selected_ID → CONTEXT(“RowKey”)`1. Set this action to run on app startup
Go to AppSheet2 > Behavior > Event Actions
Set “On App Launch” → Set Selected_ID
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?
USERSETTINGS(“Selected_ID”) holds the ID passed from AppSheet1.
Now, AGENDA records will filter only for matching MYRECORDSID.
Step 4: Test the Fix
Test Deep Link in AppSheet1
Click the button and verify if AppSheet2 opens.
Ensure the correct row=ID is passed in the URL.1. Test If Selected_ID Is Set in AppSheet2
Open AppSheet2 manually.
Check User Settings → Selected_ID should have the passed ID.1. Check If Slice Now Filters Records
Go to Data > Slices > Filtered_TUTTI → Click View Data.
If no data appears, manually set Selected_ID in User Settings and check again.
Expected Result
Now, when AppSheet1 sends the ID, AppSheet2 will store it and filter AGENDA records correctly.
Let me know if this works
1 Like
FaCe
March 3, 2025, 7:59pm
18
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
For this data: Usersettings
Here is the Solution FACE, Based on the screenshot shared, I see two issues:
UserSettings cannot be modified by actions → That’s why you don’t see an option to “Set” Selected_ID.
UserSettings works only per user session → Even if we set it, it wouldn’t persist correctly across users.
Correct Approach: Store Selected_ID in a Global Table Instead
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
In AppSheet2, create a new Google Sheet called GlobalVariables.
Add the following columns:
ID (Text, key column, default: “1”)
Selected_ID (Text)1. Go to AppSheet2 > Data > Tables:
Add GlobalVariables as a table.
Ensure it has only 1 row, with ID “1”.
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
Go to AppSheet2 > Behavior > Actions
Create a new action:
Name: Set Selected_ID
For this data: GlobalVariables
Action Type: Data: set the values of some columns in this row
Set these columns:
Selected_ID → CONTEXT(“RowKey”)- Row filter condition: [ID] = “1”
Step 4: Modify the Slice Filter in AppSheet2
Now, update the slice filter in Filtered_TUTTI:
IN([MYRECORDSID], SELECT(AGENDA[MYRECORDSID], [MYRECORDSID] = ANY(SELECT(GlobalVariables[Selected_ID], [ID] = “1”))))
Why This Works?
GlobalVariables[Selected_ID] stores the ID passed from AppSheet1.
ANY(SELECT(…)) retrieves it.
The slice filters only records where [MYRECORDSID] matches this ID.
Step 5: Set Action to Run on App Start
Go to AppSheet2 > Behavior > Event Actions
Set “On App Launch” → Set Selected_ID
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.