Scenario:
You have imported a list into SharePoint Online. Every list item contains information for specific users and users’ accounts. You want list items be visible to specific users only.
You want to leverage Item-Level Permissions under List Advanced settings: “Read access: Read items that were created by the user”. But the problem is – since this list was imported – it was not users who created items. So the item-level access feature to work properly – you’d need to update the list so for each item the field “Created By” will have a user account you want the item be visible for.
Solution:
PnP.PowerShell helps. Using “Set-PnPListItem”, you can re-write “Author” field in the list item. In the example below I’m using just static user’s UPN:
Set-PnPListItem -List "Test" -Identity 1 -Values @{"Author"="testuser@domain.com"}
but in reality you’d do it dynamically – based on your specific case.
Then you can turn on Item-Level Permissions under List Advanced settings: “Read access: Read items that were created by the user”:
Add users to “Site Visitors” group for read-only access:
References
- https://pnp.github.io/powershell/cmdlets/Set-PnPListItem.html
- https://sharepointmaven.com/how-to-enable-item-level-permissions-in-sharepoint/