Can you "Lock" columns?

Is there a way to lock columns from being edited by certain users?

Let’s say you have a Free and a Paid plan, both free and paid users share the same google sheet, the users on free plan would be able to see the “locked” columns but not be able to edit them. and users on paid plan can edit all columns (their columns are unlocked)

You’d need two different components…one, a text entry (Editable for pro) and a basic text (Non editable for basic users). Then set a visibility condition for each.

But can you set per column? e.g. 20 total columns (first 10 are unlocked, the rest of columns locked)

Users will have access to the sheet itself you mean? No…not if they’re making their own copies of the app (and this copies of the sheet). They become sheet owners and thus have admin rights to the sheet.

No, not access to the sheet or to copy the app. Just able to edit the rows in columns but limited to only those columns that are “unlocked”

I figured out how this is possible by selecting the “component” in my case this is each column in google sheet, and using visibility by selecting “add condition” and using show column when email is function.

This works for locking/unlocking columns in your spreadsheet to certain users but in my case this would make it too hard to maintain and having to add user emails to each component

I was hoping for an easier way to do this like having a sheet in your googlesheet with the list of emails to apply the visibility function

You have the right idea with visibility. If you add user profiles to your app, then you can have a sheet that will hold all of the signed in users and you can assign rolls to each user. User profile information is accessible everywhere in the app, including visibility, so you can set your condition to just look at the user’s roll instead of adding a condition for each individual email.

1 Like

Perfect! Yes, the component visibility with free/paid users will work great (much easier to manage) thank you

1 Like

Hi Jeff, it didn’t specify but on the “users” sheet, will Glide app automatically add the email of user? if so, will it add multiples or just 1 email per unique user?

Yes, new sign ins will automatically add the email to the sheet. This should add it only once per user, even if they sign in on a different device or sign out and sing back in.

Ok so in that case, the “Access Level” column should be pre-filled?

Alternatively, could I input the emails myself? this way, I can assign the “access level” per user email.

How you fill it is up to you. You can fill the access level manually, or have some other process that fills it. You could structure you visibility conditions to treat ‘Free’ and Blank the same, and ‘Paid’ would trigger a different set of conditions.

Yes, I think you should be fine with entering the emails yourself if you choose. I’m assuming that Glide checks if the email already exists before adding a new row.

1 Like

Do note that there is still an issue with case sensitivity and mail. For some reason people will login with upper case mail, then camel case mail then lowercase mail. Glide will see this a the same email. So only one entry, however if you use the MAIL param special value and post it to a related table, the mail posted and in the related table need to be the same casing. Other wise it won’t show in your join.

1 Like

Easiest way to do something like that for different users is with 2 screen components:
a TEXT compnent visable to “ReadOnly” users and
a TEXT ENTRY componenet visible to “Read/Write” users

You could also create a “locked” version of the column in question to your table-but it would be locked for everyone.
To do that, just create a template column with just one element: the column you want a “locked” version of.
You would still end up having to create 2 screen components visible to different users, but you might (depending on what screen component you are using) be able to use the same kind of component for a more uniform look.
I’m pretty sure you can’t point a TEXT ENTRY component at a “read only” column though.