Node-RED package for Coda

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:

  1. Search strings and keywords are stored in Coda to allow non-tech staff members to edit them without touching the code
  2. Our Node-RED flow accesses Coda to grab those strings and keywords
  3. It then constructs request URLs and sends requests to various services like Twitter
  4. 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

It is available on Github, as well as on npm:

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.

I hope you find this useful :slightly_smiling_face:

19 Likes

If you are interested in hardware/IoT this is the perfect library :sunglasses:!

1 Like

@Mori_Sugimoto Amazing stuff here! Thanks for sharing.

1 Like

VERY cool contribution! Thank you for posting!

2 Likes

This is really cool. Wasn’t familiar with Node-Red, what a great way to write code.

2 Likes

@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?

I created an issue on your Github repo too. https://github.com/serene-water/node-red-contrib-coda-io/issues/4

Hi Ajay

There is no upsert in the library yet.
I can have a look at a manual flow set-up I have done if you like?

1 Like

This is fantastic!

Is this periodically or via webhook?

Ahh, actually, there is an upsert node in the lib. I thought it was not in place yet. I’ll have a closer look to see what it’s doing.

1 Like

@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.

2 Likes

Thanks @Peter_Brownell. It would be awesome if you could do that! :slightly_smiling_face:

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:

.node-red/node_modules/node-red-contrib-coda-io

Update line 86

The line should be updated to read:

    return 'https://coda.io/apis/v1/' + reqStr;

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!

I gave up using node-red to be honest (for other reasons) and switched to n8n.

Up until then, I formed my own http request and handled responses manually.

1 Like

Thanks! I also took the approach of doing my own requests in node-red, which has worked pretty well.

n8n looks great, though - I will investigate that, too.

1 Like

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.