Help us improve AppSheet: slices, data filtering, & tables

Hi everyone! The UX team is looking into how we can improve the way app builders interact with data.

If you’re interested in helping us out, we’d love for you to share your thoughts on configuring tables, and how you shape, filter, and secure your data with slices and security filters. Tell us what you like, what’s missing, and don’t hesitate to share your frustrations, too!

Why do you shape your data? Do you worry about protecting sensitive data, or performance? Or just sorting and filtering? Are there data-related things you wished AppSheet could do, but are difficult or impossible? If you’re an experienced app builder, did you encounter any challenges when you were learning to use slices?

And finally, we’d love to connect with you (virtually) one-on-one. If you are interested in sharing your thoughts in more detail, fill out this form.

Thanks, and happy building!

Brandon S.

Interaction Designer

8 23 3,831
23 REPLIES 23

Ami
Participant V

Would like to share my thoughts

Some of them may not be ones you are looking for. This is quick list after I had a little think around what we need, what we are missing, what I need in terms of data controlling wihtin app editor.

  • Reorder the virtual column in the table. (Not change order in slice)
    Without create slice, opitinaly move the virtual column order up and down. Currently it is served basis first in first serve.

  • Copy column (both physical/virtual) and create the new virtual column on the same table.
    Currenlty need to manually all when we create new virtual column from scatch all the time. Copy the field setting from other field of same/other table and paste. Most of the case we add virtual column list which are similar to others. Copy and paste will create a boiler plate for new column then app creator change a bit, just a field name. This should increase the effciency and productivities.

  • “Union” tables where we have same set of data fields, in terms of fields name, data type.

Alike SQL operation, to create new slice based on multiple tables which has common data schema, to crate single virtual table. UNION.

  • Change “Key” for slice
    In case the key filed are not included in slice table, then optinally app creator can select the field as key which is not set to key in original table.

  • Security filter using Virtual column value

There should be more. I know this is not a post for feature request though.

I agree with all of @tsuji_koichi’s requests, but I understand this one would be difficult to implement.

Virtual Columns can reference the local user or device using expressions like HERE(), CONTEXT(“Device”), etc. But the row would not be able to evaluate since Security Filters are applied at the server, and filter data before sending it to the user.

So it makes sense why some virtual columns are not allowed, but it would be nice to be able to use VC in Security Filters when the VC inputs are just sheet columns for that table.

Example:

[Status]=
IFS(
  ISBLANK([Approved]), "Pending",
  ISNOTBLANK([Agent]), "Assigned",
  TRUE, "Draft"
)

Sometimes the expression is much larger, and it would be a lot easier to reference the existing [Status] virtual column than have to replicate it’s expression inside the security filter because VC’s can’t be used.

This is a problem when you want to update the expression for your [Status] because now you have to ensure those edits are copied to Security Filters too, when it could be automatic by just referencing the virtual column.


Could Security Filters be updated to allow Virtual Columns that only reference the current table?

Agree, although I think Security Filter based on Virtual column might create a circular formula problem, or even impact performance, since the app would need to calculate VC for every row before filter them.

Thanks for replying Koichi! This is great feedback. If you think of anything else you’d like to share, let me know!

  1. As Steve mentioned, expression fields need a monospace font. Bonus points for IDE-esque color coding.
  2. As Koji mentioned, we need to be able to reorder virtual columns. However, the only place this matters is on form views -> all other views (table, detail) allow us to specify column order already. We should be able to organize columns within the UX form views, rather than having to make a slice just to order the columns.

Oh, and you know what, I do have a question for you: when you talk about creating unions of tables or virtual tables, can you elaborate on what motivates you to want to do this? Say for example, you have three tables of data. It wounds like you would create a virtual table out of some columns from each. Is that correct? And if so, how would you organize that, and why is that a benefit to you?

Steve
Participant V

Well… You asked for it…

Basic App Creation

All expression fields should have a clear-expression button so that one doesn’t have to go into Expression Assistant to clear an expression.

Toggling a field from text to expression, or enabling the expression on a column constraint, should automatically open Expression Assistant.

Freeze headers and column names in the column list.

Display all expression fields (including in Expression Assistant) in a fixed-width font.

Don’t resize buttons (e.g., Regenerate Structure) when clicked, so that the user needn’t move the pointer to deliver the confirmation click.

Add expression flask to fields that are expression-capable (e.g., SHOW?, EDITABLE?) in the columns list standard view.

Add on-hover or pop-up tips throughout, especially on the more arcane/obscure labels (e.g., NFC, PII).

Anywhere anything may be rearranged or reordered (e.g., menu views, actions, slice columns), it should be possible using drag-and-drop or with arrow keys.

System-generated ref views and actions should not be sorted separately from user-added ones.

A change to a component (e.g., view, action) that prompts its relocation within the displayed page (e.g., for sorting) should not change its on-screen location. I should not have to go find what I was just configuring after making a change.

Reduce the need for so much scrolling throughout. Less whitespace?

Advanced App Creation

Sort or provide a means to sort tables and slices to suit the preferences of the app creator. With more than just a handful of slices, it becomes a pain to locate the one I want if they aren’t sorted.

Ability to copy column configurations within and between tables.

Ability to add and delete multiple tables without a reload for each.

Ability to regenerate columns of multiple tables at once.

Ability to copy configuration between apps, so that I can easily reproduce features from one app in another without recrafting it all manually.

Ability to disable hints entirely. As an experienced user, I never use them, and the attention-grabbers are an distraction (by design!). I should not be conditioned to ignore attention-grabbers.

Ability to reset User Settings to the default to remove experimental artifacts.

Remove or allow user to hide warnings that have no significance. For instance, gallery views are perfectly usable without images, but a warning is displayed, conditioning me to ignore warnings.

Make the app editor more device-friendly to facilitate app creation on smaller form-factor devices like phones.

Allow comments in expressions.

Improve keyboard navigation; reduce the need for so much pointing and clicking.

Integrate Qrew Tools.

Some method for comparing two versions of the same app, or even different apps; something like diff.

Add regular expressions, please!

Generally, give greater consideration to experienced app creators.

Security

Prevent the app user from accessing views that the app itself doesn’t expressly expose. A user can currently craft a URL to access any view in the app if the user knows the view name or enough about the tables or slices to guess the view name. This allows the user to bypass many of the app creator’s attempts to “secure” an app.

Ability to delete system-generated actions to prompt recreation with default configuration, as can be done with system-generated views.

Ability to delete system-generated views and actions permanently.

Ability to prevent the app from using any auto-generated view (e.g., fasttable).

Ability to prevent any user access to any (e.g., system-generated) view based on a table; ability to restrict user to only views based on slices. Views of tables offer full access to table data and actions, where slices can substantially limit both, vastly improving security. In my opinion, views should not be allowed on tables directly, only on slices.

Stop leaking app config internals in URLs. No table, slice, or column name should be included, nor should any expression. Accepting expressions in URLs allows code injection.

Can I double and triple heart Steve’s suggestions!

Agreed, especially the scrolling!

@Steve What does all this mean? - See Info > Properties > App Documentation. There is a link to create a PDF of your app’s documentation. In that documentation, some things appear to be missing, per my experience anyway.

Stop leaking app config internals in URLs. No table, slice, or column name should be included, nor should any expression. Accepting expressions in URLs allows code injection.

With some basic skills, you can even retrieve documents stored in a cloud and bypass cloud provider security. ( never try it on other file containers )

Bahbus
Participant V

This. The whole string should be obfuscated or encrypted in some way.

hcquadros
Participant IV

FURTHER FILTERING CAPABILITIES ON TABLE VIEW

For filtering tables, the user have search field and column ordering. To enable further filtering options for the user, we need a slice with filter-expression based on a filter-table. I think the Feature Request below is great to do that without work-arounds.

Austin
Participant V

My absolute biggest recommendation:Virtual columns on slices. I currently have a 15 real column table that I have blown up to 45 virtual columns. Most of which are “this view using this slice needs this verbiage or this set of fields concatenated together to show more information”. Although sometimes these formulas require complex multi select, lookup, or a nested mess of IFs,ANDs, and ORs. I would love to limit the computation needed when my tables are in the tens of thousands of rows but I only need this virtual column for the 100 current rows in my slice. We had to create a script that moves all rows related to a parent after they have been completed from our database to a historical set since the performance went into the dirt at around 50k rows across a handful of tables.

daw7
Participant III

I mainly used Slices to filter data to manipulate how that specific part of my project will appear on user’s view. I don’t use Slices to filter data for security reasons. I should use Security Filters feature if filtering data is for security reasons.

solomon_iseh
Participant II

Good morning,
I would my users to be able to choose theme and main app color from usersettings

adehartcal
Participant I

Thanks for asking Brandon. Some of my (off-topic) insights:

  1. The preview pane shows the wrong table. It always shows the name of the first tab in my sheet. https://screenshot.googleplex.com/vGeDyyZrEMO.png

  2. I am forever modifying the wrong table. I find the table I need, and then realize “oh, right, I have to modify at the column level”. So I switch to column tab, and whatever random table was already open there is present. I start modifying and then realize, oops, wrong table.

  3. I love that I can copy slices (and views), because I need to make a lot of filters for the dashboards. Very handy feature.

  4. Dashboards are great! They should be more forward in the training or documentation. Until a legit filter/sort is available in AppSheet, and most makers are headed to Dashboards eventually. I spent a ton of time trying to make the experience myself (almost impossible) before I found Dashboards.

  5. I really like that we can print or save PDF of the app’s logic. However, I can’t find “show if” logic on my UX views in the PDF. I see “Visible? ALWAYS”, which is not the case (and a little scary because some dashboards should not be visible always, to every user).

Happy to send you more running commentary as I get through this application design.

What does all this mean?

It could be good to have, in table views, a filter panel similar to the one of Firestore on GCP.


Users can select a column and some selections criteria appear

Rehan_A_Khan
Participant II

There should be a Enable and Disable Button on each UX Design.
Because sometimes, some views you are working on it and are not complete , so you put on hold. rather to delete it.
or sometime, when we distribut the APP to users, we don’t want to disclose some UX to show them what is coming into new or underconstruciton.
or sometimes. when it gives an error and your app is almost ready to launch, you can put on hold the UX by pressing the button DISABLE. and go…>

Rehan_A_Khan
Participant II

We would like to add an Action. called data into CLIPBOARD.
with Seelction of fields or CONCETENATE some fields data into CLIPBOARD.
so later use CTRL+V to paste anywhere required…

This is a must feature desperately required by all of our developers and users.

aucforum
Participant V

Some quick thoughts: allow for sorting and filtering to easily define in the slice as putting into the view is not convenient.

I also have been seeking a way of having parameters in the slice so as to avoid hard coding slices.

See one of more detailed posts for further insight and direction for reusable components:

Dear Brandon,
I am glad you are asking this question because filtering/slices/row and column selection is one of the most confusing issues I have encountered with AppSheet. Not that it is difficult in itself, but it creates unnecessary steps and makes app creation not intuitive for a true no-coder (by way of background, I created a simple time-tracking app for myself and am in the process of creating a few apps for my small business).
Let me walk you through the steps of a no-coder to filter data. Starting with Data, you are proposed to “SHOW?” certain columns in the Data>Columns: that’s the first level of selection, but it’s already counter-intuitive because shouldn’t a decision to “show” data be part of the UX menu? If you want to filter rows, you are proposed a Security Filter: nice, but is only available for PRO plan. Then you go the Views but cannot find any row filter, so you google it and learn that Security Filter was not the way to go anyway: filtering rows is actually called a Slice (?) and appears in the menu Data (even though it is the equivalent of an SQL VIEW : shouldn’t it be in UX then??). So slicing is the second level. Then you go back to your Form View and you would like to show a few limited columns, but you can’t. Oh wait, you actually can: it’s called “Column order” and that also enables to select only certain columns (not clear at all). So that’s the third level of selection. And you learn later that could also have filtered columns from the Slice itself!
Do you see how all these possibilities create confusion? I am sure coders love to have multiple options, but no-coders just want to have minimal options and an intuitive process.

I am very impressed by how robust AppSheet is: there are endless features and it seems that, no matter what you throw at it, it never crashes, and it also automatically corrects your own mistakes; that is so amazing! But I feel that, if it wants to reach out to business professionals with no IT background, the user experience should really be seamless (like the one of your competitor ? you know, the one that sounds like a parachute ?): maybe Googlers could help on that front?

Thanks for listening and keep up the great work!

PS: would it also be possible to improve the naming of several features in AppSheet? I have had to go back to the Help site multiple times to be reminded the meaning of terms such as “Label”, “Ref view”, “Dereferencing”, etc.