@419 out of curiosity, what would happen to any views or =formula
based on tables inside of folders/sections that the user can’t see? That feels like one of the hardest challenges in a permission system IMO.
Here’s my thought on how it might work.
Caveat 1: You cannot change permissions within a doc
Sharing things piecemeal is really difficult in this scenario, because of the problem above.
Caveat 2: You can export a view
To fix this, my proposal would be that we can export a “view”. Views are mutations of tables that change their source content. To make sure there aren’t data inconsistencies between coda docs, I’d suggest exported views in v1 be read-only. This way the data flow between coda docs is unidirectional.
If you revoke permissions on the parent document, then the view remains fixed in time. Breaking the link is a lot easier to manage and would minimize user confusion.
When the parent document’s table changes, linked views are updated (probably on like a 1min lag time or something).
What it would look like
In this example, I’ve modified the coda interface to show a “published” view. Filters have already been applied, making the view gain a light green outline. (Maybe orange? Does coda like orange?) The details of the publish dialog are somewhat straightforward, explaining that the content visible in the View is what will be available in other coda docs and that this doc will remain the source of truth.
In the receiving document, we would have an option to use another Coda Doc inside of the Import From. Using Google Drive’s file picker, you could select a file you have permission to, which would then list only the tables flagged for export.
Once imported, a view referencing another coda doc would contain a link to the original table (just like any other view), but the permissioning has been handed off to Google’s share model which is pretty robust.
- It cannot have new data rows added (can only be added in source document)
- It cannot have columns added (only hidden or rearranged)
- It cannot change column properties or edit existing data (can only be done in source document)
Aside from those three rules, it’d be just like any other table view. Sortable, queryable, used in lookups, and more.
Thoughts?