Relation Based on a Relation?

Hi, Glide Experts. I’ve only just begun getting into users/roles, so my whole approach may be wrong, but I am trying to return an array (or csl) of all users from a specific location who have a specific role. I will be using these email arrays for various Row Owner situations where just a role name won’t work.

I have 3 sheets: LOCATIONS, ROLES, USERS (STAFF).

USERS has REL Columns to both their respective locations and roles. Locations is a Multiple REL and Roles is a Single REL, in case it matters.

LOCATIONS has an Multiple REL for all users assigned to each location, with a Lookup of all user emails.

What I’m trying to figure out is how to extract the user emails of each location that have a specific role. (Highlighted columns are just for show)

I’ve read similar topics that advise using IF columns, but I can’t wrap my head around how to make that tactic work. If only there was a Rollup function that returned arrays instead of just calculations…

Any suggestions? Thank you!

A lookup column will return specific values from a relation. Whether or not it’s an array depends if you have a multiple or single relation, or if you are looking up an array column.

But, you cannot assign Row Owners to an array column if it’s derived from a computed column. The only time you can assign Row Owners to an array is when you are using an external data source, such as a google sheet, and you sequentially number columns. That is the only method that will create an array server side instead of client side side.

1 Like

Thanks, Jeff. So my approach was wrong (too bad, as I just figured out how to get what I wanted to work!)

Perhaps you could shed a bit more light on roles/row owners then? I guess my biggest question is if I assign a row to just a role (Manager), doesn’t that make it accessible to every Manager at every location?

See my app is for bars to store recipes and SOPs. I have several sheets that are essentially Read-Only sheets for managers only, which is where I see assigning the row to Managers working perfectly as the data is not location-specific and will likely never need editing, so all managers across all locations should see it.

But for sheets where managers will be editing/adding location-specific data (e.g. adding a cocktail recipe to the cocktail recipe sheet) that will then be read by various other location-specific users, how should I set up my Row Owners for that?

If I assign it to the Manager’s email, then other roles won’t be able to see the data, correct?

But if I assign it to the Bartenders role, other bartenders at other locations would be able to see the data, correct?

Sorry for the novel. I’m sure I’ve confused some part of this.

There’s a lot of ways to approach it. But here are some general guidelines.

  • First, it should be known that you can assign Row Owners to multiple columns. It doesn’t necessarily have to be an array. You can mix emails and roles in a single column as well as in multiple columns.
  • You can assign multi roles to each user, but this does have to be an array, and the only way to create that array is to sequentially number columns in an external database, such as google sheets.
  • Computed columns, including lookup arrays, split text arrays, or any other array that’s created within glide cannot be used for row owners. The reason for that is because all computed columns are computed on the end user’s device. Data would have to first be sent to the user’s device for the computed columns to build the arrays to determine row owners. At that point, it’s too late and you’ve already exposed the unowned data, so the security of row owners would be useless.

If all locations are part of the same company, then maybe data security is not as important. In that case, you could consider just filtering the data, or use a mix of row owners and filters. Based on the role, you could use it for data security and/or use it for filtering and control over who can add and edit data.

Roles and Row Owners are for securing data. If you don’t necessarily need to secure the data, then you can use filters and visibility controls.

3 Likes

Jeff, I actually just watched a @Robert_Petitto video that I hadn’t found before and it clarified just about all of my questions.

Thanks again for your previous advice, definitely pointed me in the right direction!

Edit: Just saw your well-thought-out reply. Exactly what I needed as well.

4 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.