USERNAME() and FILTERING DATA

I am currently using USEREMAIL() in combination with a table of Employees (Name, Email, Phone,Role) and LOOKUP functions to do a wide range of filtering of data and deciding what to show, what is editable, etc. for each user.

For exampleโ€ฆ

  • SHOW IF: LOOKUP(USEREMAIL(),Employees,Email,Role)=ADMIN
  • EDIT IF: [Name] = LOOKUP(USEREMAIL(),Employees,Email,Name) ]

My understanding is you either canโ€™t or shouldnโ€™t use USERNAME() for this.

I know that Lookup is expensive on sync time. The easy way around is to use Email as the Ref column for the employees table, but that gets annoying because I really want to by default show the name of employees for my users, not their email address.

Is there an easy or better way to do this?

I could create new USERSETTINGS fields called Name and Role and set them to the personโ€™s name and role by default, then invoke this filtering using USERSETTINGS(Name) and USERSETTINGS(Role), but I canโ€™t figure out if thereโ€™s an admin interface to manually edit settings to ensure all the usernames are set correctly and appropriately locked down.

Suggestions welcome!

0 2 962
2 REPLIES 2

Steve
Platinum 4
Platinum 4

Because of a quirk with the is-equal-to operator (=), your expression will be TRUE if LOOKUP() returns a blank value. Best to swap the operands:

ADMIN=LOOKUP(USEREMAIL(),Employees,Email,Role)

Make Email the key and Name the label?

Not heard of this but the main reason to avoid using USERNAME() is, itโ€™s not unique. On the contrary USEREMAIL() is always unique.

Top Labels in this Space