Collaborative Workflows & AI Governance
Audit Named Workbook Invitations vs Paginated 20x10 Public Links
Verify owner-only Pro sharing gates, named collaborator roles (viewer, contributor, suggester) with in-app-only invitations (emailSent=false), and separate 20x10 paginated public read-only links in Arte Sheets.
Keep named teammate invitations strictly separate from anonymous public read-only links
Arte Sheets separates named collaborator access from anonymous public sharing across both the in-app workspace and external scoped OAuth integrations (note: the Arte Sheets ChatGPT plugin 0.1.0 is currently In review / Not published). Inviting a specific person via share_workbook (or owner-confirmed in-app share_document) requires the owner role, an active Pro subscription, an explicit email address, and one of three collaborator roles — viewer, contributor, or suggester — creating an in-app invitation (emailSent: false, never sending external email) that grants live cursors/avatars, comments, @mentions, or suggestion/edit access upon sign-in.
By contrast, manage_public_link is an explicit, separate owner + Pro action that must NEVER be enabled silently when an owner asks to invite one colleague! Anonymous public links render a paginated 20 rows x 10 columns read-only cell grid —ROUNDUP(rows / 20, 0) * ROUNDUP(cols / 10, 0) grid pages— without charts, comments, revision history, or AI tools. Ordinary MCP sharing/reading calls do not consume monthly Arte AI credits, whereas in-app Pro Assistant prompts consume metered monthly AI credits.
| Sharing Channel | Prerequisites & Role Rules | Delivery & Viewer Capabilities |
|---|---|---|
| Named Invitation (share_workbook) | owner + active Pro + email + viewer/contributor/suggester | In-app invite (emailSent=false); full role collaboration |
| Public Link (manage_public_link) | owner + active Pro (separate explicit toggle) | Anonymous 20x10 paginated cells; no charts/comments/history/AI |
| Read Public Status (get_public_link) | owner role on cloud workbook | Inspects current public-link state without mutating access |
Public Read-Only 20x10 Grid Tile Page Count Formula
Calculate how many 20-row by 10-column anonymous public-view pages cover a sheet of B7 used rows by B8 used columns: for 75 rows x 24 columns, ROUNDUP(75 / 20, 0) * ROUNDUP(24 / 10, 0) = 4 * 3 = 12 pages.
=LET(r_used, B7, c_used, B8, IF(OR(r_used <= 0, c_used <= 0), "Invalid Sheet Dimensions", ROUNDUP(r_used / 20, 0) * ROUNDUP(c_used / 10, 0)))Sharing Governance Gate (Owner + Pro + Channel Separation) Formula
Verify caller role, Pro plan status, channel separation, target role allowlist, and email presence before dispatching a sharing mutation.
=LET(c_role, B2, is_pro, B3, ch_mode, B4, t_role, B5, em_txt, B6, IF(c_role <> "owner", "Blocked: Owner Role Required for Sharing", IF(is_pro <> 1, "Blocked: Active Pro Required for Share Mutation", IF(ch_mode = "public_link", "Ready: Separate 20x10 Read-Only Link (No Charts/Comments/AI)", IF(ch_mode <> "named_invite", "Blocked: Unknown Share Channel", IF(ISERROR(FIND("@", em_txt)), "Blocked: Explicit Recipient Email Required", IF(NOT(OR(t_role = "viewer", t_role = "contributor", t_role = "suggester")), "Blocked: Role Must Be viewer/contributor/suggester", "Ready: In-App Invite Only (emailSent=false)")))))))Try the example
Use the original values or change them to test your understanding.