Hi Community,
I'm building an internal procurement workflow app on AppSheet for our organization. The app manages requests that go through multiple approval stages (Line Manager, Procurement, VP Implementation, Finance, and finally Payment by Accountant). Each request has a status field to track its lifecycle — e.g., "Draft", "Pending Procurement", "Approved for Payment", etc.
I’m trying to control edit permissions using the Are updates allowed? formula at the table level in the Requests table. My goal is to:
Allow initiators to add and edit requests while they are in Draft.
Formula That Locks Everything Except Admin — but blocks even new adds:
IFS(
AND([Status] = "Draft", [Requested_By] = USEREMAIL()),
"ALL_CHANGES",
AND([Status] = "Pending Procurement",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Procurement"),
"UPDATES_ONLY",
AND([Status] = "Approved for Payment",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Accountant"),
"UPDATES_ONLY",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Admin",
"ALL_CHANGES",
TRUE, "READ_ONLY"
)
Formula That Allows Adds — but doesn’t fully prevent editing of submitted requests:
IFS(
ISBLANK([Request_UID]),
"ALL_CHANGES",
AND([Status] = "Draft", [Requested_By] = USEREMAIL()),
"ALL_CHANGES",
AND([Status] = "Pending Procurement",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Procurement"),
"UPDATES_ONLY",
AND([Status] = "Approved for Payment",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Accountant"),
"UPDATES_ONLY",
LOOKUP(USEREMAIL(), "Users", "Email", "Role") = "Admin",
"ALL_CHANGES",
TRUE, "READ_ONLY"
)
The issue with this version is that it fails to block editing of already submitted requests (e.g., when status is “Pending Procurement”) even by the initiator.
Question:
Is there a reliable way to:
Allow new request creation,
Would appreciate any guidance or alternative suggestions!
Thanks in advance 🙏
Table level Change control is not a row level setting, meaning you cannot modify access levels based on the status field values.
I would use a combination of Security filter and field level edit controls to achieve what you want. I assume even a Procurement officer should not be able to change field values other than the status field, which certainly requires field edit control.
Another approach would be to control views. Show a Form (edit) under certain conditions (Owner, Admin, Status: Draft, etc.) only. Use actions to change the Status field.
User | Count |
---|---|
18 | |
9 | |
8 | |
5 | |
5 |