Best way to filter list data

I have a sheet skills which currently has 2 columns skill and email (stores logged in user’s email). Currently the user adds one skill at a time, so for 2 skills there will be 2 rows. I can probably have Skills 1, Skills 2… columns which Glide can combine into one Skills column but that is not the case now (may be it should be). I have another sheet ServiceRequests and each service request has one skill (column name is ServiceType but it has the same values as skills added by users). So the question is how can I display only those service requests to user that match their skills?

In the Skills sheet, have them writing to an array column as you have said.

In the ServiceRequest sheets, probably you can have an If > Then > Else column to bring the user email in, make a single relation matching the user email there to the one in your Skills sheet. Have a lookup to bring the skills array column over.

Then finally make a relation matching the single skill of each service request to the lookup skills array column. Show the skill to the user only when the relation is not empty.

@ThinhDinh Not sure how If-then-else can be used to bring service provider’s email from skills sheet into service requests sheet. Looks like if-then-else only works on columns in current sheet and service provider’s email is not there in service request sheet. I can bring in all service provider’s emails from skills sheet using a relation but then how do I use that as relations can only be used as a filter in a very limited way.

Either way will work, but a template column would be easier to get the signed in user’s email from the user profile sheet.

I would maybe do it different if you keep the multiple rows for each user skill. You can create a template of the skill and email in the skills sheet. Then create a template in the request sheet of the skill and the user profile email. Then create a relation like @ThinhDinh mentioned to link the template in the request sheet to the template in the skills sheet. Show the request if the relation is not empty. If you change to the array of skills in the skills sheet, then I think @ThinhDinh’s idea will work for you.

1 Like

Hi Jeff,
What is a template column? Is this something I should use when I have a user that shows up in multiple areas of the app? For instance, different roles, categories, events? Is it cleaner to have one big sheet with all of the items linked to them in it, then have a list of categories, roles, and relate back to the user list or should I be doing this in a different way?

If you have records that are specific to the user, you should only need to store the email of the user in that record. If you have records that are specific to users of a certain role, then the record should have the role type in it. Any user data should be stored in a user profile sheet where you keep details about each user and their role. You can then enable and use user profiles to control what each user can see.

https://docs.glideapps.com/all/reference/privacy-and-per-user-data/user-profiles

@Navjeet_Chabbewal The requirement seems slight confusing.
Users add skill. So multiple users can add same skills? Right.

Which means when you displayed ServiceRequests to user, the same servicerequest show to multiple users. Is this understanding correct?

If this is so, then you can create a relation from ServiceRequests to Skill sheet and then use lookup to get all email for that ServiceRequest match. So for that ServiceRequest(basically skill) you will get all the email id’s.
Then in UI set filter condition to “Signed In User”.

2 Likes

Thanks @Coupons_Deal that worked.

Happy to Help :slight_smile: