Thanks for the added clarity Pieter.
There are some key distinctions worth noting related to your questions and specifically with regard to events.
-
Coda doesn’t [yet] provide us with events about changes to data fields, rows, or tables. Typically, events are combined with webhooks (another missing feature) that allow other systems to be notified based on changes of any type.
-
Since Coda doesn’t support events, all other systems integrated with Coda are at an equal disadvantage with one exception - Slack (more about this later). If external systems have no way to be informed about a change, they cannot be [automatically] responsive to things that happen in your Coda data.
-
All three platforms you mentioned must “poll” for changes in Coda; typically minute-by-minute They simulate change events by tracking previous values with each new poll request. This is very inefficient, but for the most part, it gets the job done and if by “getting the job done” means pummeling Coda’s servers 1,440 times a day for one change.
Sidebar - one way to improve Coda’s performance is to simply enable events and outgoing webhooks.
-
Unfortunately, polling processes need business logic to be effective; they need to know the definition of the “change” you want to detect.
-
As you readily make clear, the change of a specific cell value is a requirement, but this type of granular logic is not possible in Integromat and Zapier without adding this logic to these platform configurations using script (as far as I know). @Paul_Danyliuk can probably confirm this. Google Apps Script is no different, it must use script and the Coda API to assess change and then act.
Armed with a clear understanding of these constraints…
If you are referring to a new calculated value in Coda, the answer is no.
If you mean link to a cell in Google Sheets based on a value of an other cell in Coda, the answer is also no.
Indeed. This would be ideal because it would give us the ability to perform some very complex logic external to Coda docs. Furthermore - and this is perhaps as important - we could seamlessly integrate live data from the many legacy systems in Sheets, Excel, etc.
Google Sheets → Coda Tables
With some of my clients, I overcome this limitation with Google Apps Script by defining business logic that leverages Google Sheets’ events. When a cell in a Google sheet changes, a script is triggered, and using the Coda API, I update the cell (or cells and rows) in Coda that are impacted as a result of the Google Sheets changes.
HTTP GET and POST Support
In addition to events and incoming webhooks, Coda is missing what I refer to as the third leg of the three pillars of integration - HTTP POST (and GET). Typically, webhook architectures support both incoming and outgoing webhooks (Slack is a good example) where outgoing webhooks perform an HTTP POST.
But we must be precise when discussing these concepts. Outgoing webhooks that use HTTP POST to send data and messages from Coda to other systems is quite different than features which enable arbitrary HTTP POST actions. The former (webhooks) are generally connected to events, whereas the latter is simply an action that might be invoked by a user clicking a button (for example).
The Coda Slack Pack currently invokes an outgoing webhook, but such capability is presently not surfaced through the Coda API. This is why I have lobbied for access to the primitive methods that the Slack Pack obviously takes advantage of. Indeed, outgoing webhooks exist in Coda - they’re simply not yet exposed. My plea - Pack development should be open and I suspect that is planned.
Integration Desperation
In some cases, I have been so desperate for events that I use the Slack Pack to trigger messages about row changes. Then I use the Slack outgoing webhooks to inform Google Apps Script that something has changed. It gets the job done but at great complexity.
There have been numerous hacks posted in the forum - this one in particular - but these still lack events and thus, require humans to do stuff.
Ideally, a cell in Coda should be able to (a) sense that a change has occurred, and (b) make an HTTP POST to another service all behind the scenes and quietly. This would allow us to build real-time update processes into other systems that support incoming webhooks and update their data accordingly. A few examples -
- A Coda cell changes and a comparable cell in a Google sheet also needs to be updated.
- A Coda cell changes and a process in Google Apps Script needs to be started.
But back to your original need - we can rephrase this slightly and achieve your objectives.
I would love a cell in my Google Sheet to update a cell in Coda when it changes in my Google Sheet.
This is possible now using Google Apps Script and events that detect when changes occur in Google Sheets.
I hope this helps and I urge other Codans to validate my assessment because I do get it wrong from time-to-time.