Hello, I built a Node-RED package for Coda and wanted to share with you.
Node-RED is a flow-based development tool that allows you to build applications quickly and easily. It’s built on Node.js so easy to set up (if you are familiar with CLI). It also comes with an intuitive browser-based GUI so it’s incredibly easy to get started.
I’ve been building tools using Node-RED that aggregates data from Twitter and various other data sources. Our typical Node-RED flow works as below:
Search strings and keywords are stored in Coda to allow non-tech staff members to edit them without touching the code
Our Node-RED flow accesses Coda to grab those strings and keywords
It then constructs request URLs and sends requests to various services like Twitter
When responses are received, it parses/formats the data, then saved in various storages including Coda and Google BigQuery
Node-RED is very good at processing data asynchronously so tasks such as querying through Twitter search API and writing the results to database / Coda was relatively easy to build.
Since we are planning on building more flows like this, and Coda has become our essential tool for data analysis and visualisation activities, we have decided to build a Coda package for Node-RED to make it even easier to interact with Coda from Node-RED.
At the moment, the package comes with the following nodes:
Connection settings node
Stores multiple Coda API tokens and table IDs
Get data node
This node constructs a URL and HTTP header to:
get a list of tables in a doc
get a list of columns in a table
get rows from a table
Multiple pages node
Sends multiple requests to Coda to retrieve a large number of rows from Coda (Coda allows you to retrieve up to 500 rows per GET request)
Upsert node
constructs a URL and HTTP header
format data into a structure that is accepted by Coda APIs
The documentation comes with detailed instructions, as well as some sample flows, which you can import to your Node-RED instance to try out so it should be quite straightforward to get your flows to interact with Coda documents and tables.
@Mori_Sugimoto
I am a huge fan of Node-Red and only recently discovered Coda. I was thrilled to see that you have created a package for Coda, opening up numerous possibilities for the platform! Thank you!
I tried installing the package and was able to successfully fetch table entities, rows etc. However, I cannot get the upsert node to show up. No matter what I do, it initially shows up in enabled state (but will show no entry in the sidebar). Once I disable it and try to enable it again, it will never get enabled. Could you help me here, please?
@Dalmo_Mendonca The data is via an API pull. So you need to trigger it from Node-Red.
One option is to set up an http url listener on Node-Red, and then create a Coda button to open the link.
Hey there. I know this is an old thread but I’m trying to use node-red to pull row data and I keep getting a 404 “Not Found” message. However, when I form an HTTP request with the same settings, I can pull the row data.
Any idea what could be going on?
@Petros_Dias - am replying to this very old thread! I am also just a user. I found that the library hasn’t been updated for several years, and since then the Coda API has changed versions. There’s an issue about this on the Github page. The author replied there, but I don’t think ever updated the code.
Here’s what I did:
Update core.js code, which is found in the folder:
I also hit this same problem! Were you able to figure this out? The code is there, and looks basically okay, but I can’t get the Upsert node to appear in the toolbar.
If I look at “Manage Palette” I can see Upsert node is listed there, but with dotted lines around it. I don’t see anything obvious in the logs!
n8n open source philosophy is quite different than node and it’s quite more resource heavy.
BUT the last updates of n8n have made it quite nice to work with plus it’s got a ton of ready made nodes. For “casual” users I recommend n8n, especially if you’re looking to connect platforms, easily debug your runs and generally pleasing user interface.
If you’re dealing with a ton of data exchange, high data rates, mqtt or lots of custom JS scripts, I’d go with node then.