Welcome to the community @Welley!
Thanks a lot for informing us about it. We will have a look and make sure to release a version which uses the correct API.
Welcome to the community @Welley!
Thanks a lot for informing us about it. We will have a look and make sure to release a version which uses the correct API.
Nice! Thanks!
Got changed and will be released with the next version:
https://github.com/n8n-io/n8n/pull/813
Got released with n8n@0.76.0
Wow! Really fast!
I’m trying to get the upsert functionality to work, and I’m not quite sure what i’m missing.
Inserting rows works without any problems. However - with active keyColumn option - when data with matching values in the indicted keColumns is passed to the node, the rows will just be added to the table and not updated.
What doesn’t make so much sense: with activated keyColumn option the Coda-Node is asking for an actual Column in the Coda Doc named “keyColumns” to be present - is this correct behaviour?
{
"name": "",
"nodes": [
{
"parameters": {},
"name": "Start",
"type": "n8n-nodes-base.start",
"typeVersion": 1,
"position": [
480,
440
]
},
{
"parameters": {
"functionCode": "return [\n {\n json: {\n ID: '001',\n Name: 'New Name',\n Email: 'new@name.com'\n }\n },\n {\n json: {\n ID: '002',\n Name: 'Another Name',\n Email: 'another@name.com'\n }\n },\n {\n json: {\n ID: '003',\n Name: 'Third Name',\n Email: 'third@name.com'\n }\n },\n {\n json: {\n ID: '002',\n Name: 'Update Karl',\n Email: 'update@name.com'\n }\n },\n];"
},
"name": "Function",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
663,
448
]
},
{
"parameters": {
"docId": "x8xWEzaKIB",
"tableId": "grid-ekA84pQJyV",
"options": {
"disableParsing": true,
"keyColumns": "c-5Tg5lzjVbB"
}
},
"name": "Coda",
"type": "n8n-nodes-base.coda",
"typeVersion": 1,
"position": [
1020,
450
],
"credentials": {
"codaApi": ""
}
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"string": [
{
"name": "c-5Tg5lzjVbB",
"value": "={{$node[\"Function\"].json[\"ID\"]}}"
},
{
"name": "c-MrZEh_q3lD",
"value": "={{$node[\"Function\"].json[\"Name\"]}}"
},
{
"name": "c-9iu64ip6cB",
"value": "={{$node[\"Function\"].json[\"Email\"]}}"
}
]
},
"options": {}
},
"name": "Set",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
840,
450
]
}
],
"connections": {
"Function": {
"main": [
[
{
"node": "Set",
"type": "main",
"index": 0
}
]
]
},
"Start": {
"main": [
[
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Coda": {
"main": [
[]
]
},
"Set": {
"main": [
[
{
"node": "Coda",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {}
}
Welcome to the community @grove.
Just checked this node and you are right there is a bug. The keyColumn is being sent in the wrong format. Will fix and keep you posted. Thanks for letting us know.
@grove ok it’s fixed. We will let you know when is released.
Awsome, that was quick. Thanks a lot!
Just got released with n8n@0.79.0
@RicardoE105 Could you please update the Coda node to add some of the newer features of their API? They have release endpoints for managing pages and improved some of their existing APIs too.
Also, it more than pages, it would be truly amazing to have support for interacting with the API responses ‘Simple’ mode, just like you’ll have implemented with the Notion nodes. You’ll have done an amazing job on the Notion node in terms of abstracting technical API level specifics like JSON arrays and field IDs from the end-use, by auto-populating most aspects of the node like field names, field values (in case of dropdowns and tags), etc. I would love to see that in the Coda node too, if possible.
Thanks!
Glad that you liked the Notion node. Yes, we added the possibility to create fields “dynamically” depending on the field type with the Notion node. That is why, it’s the only node that can do that. In future we will adding this to Airtable, Code, etc.
About extending the Coda node. Can you please create a separated feature request with the details. That way people can upvote it. The more votes the more chances of being develop.
Sure, @RicardoE105. Will create a separate feature request for it.
Also, glad to heard that you will be adding the ‘Simple’ option to more nodes in the future ![]()
BTW, I noticed a bug in the existing Coda Node. The ‘Update Row’ option does not work no matter what inputs I tried.
Here is the error I receive…
TypeError: Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at Object.execute (/usr/local/lib/node_modules/n8n/node_modules/n8n-nodes-base/dist/nodes/Coda/Coda.node.js:539:46)
at Workflow.runNode (/usr/local/lib/node_modules/n8n/node_modules/n8n-workflow/dist/src/Workflow.js:492:37)
at /usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/src/WorkflowExecute.js:424:62
at processTicksAndRejections (internal/process/task_queues.js:93:5)
Further, the Update Row option seems to be implemented for Views but not for Tables themselves (which are the sources for Views). I am guessing this was accidentally missed out as it would be odd to leave it out as both calls use the same endpoint.
Unfortunately, this is a major challenge for me at the moment as the Coda node can effectively only read data and cannot update any data. Whenever possible, could you please look into this issue and the missing Update call for Tables?
BTW, I noticed a bug in the existing Coda Node. The ‘Update Row’ option does not work no matter what inputs I tried.
I just tested it, and it works fine for me. That means that the columns provided in “Key Name” do not exist in the input. What is the input the Coda node is receiving in your case? What are you setting the Key Name value parameter to?
Anyways, I do agree. The node needs some love. For example:
Further, the Update Row option seems to be implemented for Views but not for Tables themselves (which are the sources for Views). I am guessing this was accidentally missed out as it would be odd to leave it out as both calls use the same endpoint.
Actually, the view resource is using the table endpoint. When we created the node, the Coda API was in beta. I guess the change restructure the endpoints, and that is why we added it under view instead of table.
https://coda.io/developers/apis/v1#operation/updateRow
Btw you can also use table:createRow to update a record. If you set the “Key Columns”, you can do an upsert. If the key column exists it updates the record else it creates a new record.
That means that the columns provided in “Key Name” do not exist in the input.
Ah, understood. That fixed my issue.
Also, doing a table:createRow to upsert a row worked perfectly. Thanks a lot, @RicardoE105! ![]()
I guess this resolves my immediate issue. Nevertheless, I hope that at some point in the future these older nodes get a fresh coat of paint like the newer nodes I mentioned in my comments above.
Glad that it worked. Yes, at some point these older nodes will get improvements.
Hi folks and @RicardoE105
I’m trying to insert rows into a Coda table using the Consume Coda API node but am getting this 400 error message:
{“message”:“400 - {“statusCode”:400,“statusMessage”:“Bad Request”,“message”:“Invalid \“value\” field in a cell - must be a boolean, number, string, or array thereof.”}”,“name”:“Error”,“stack”:“Error: Request failed with status code 400\n at createError (/usr/local/lib/node_modules/n8n/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/usr/local/lib/node_modules/n8n/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/usr/local/lib/node_modules/n8n/node_modules/axios/lib/adapters/http.js:269:11)\n at IncomingMessage.emit (events.js:327:22)\n at IncomingMessage.EventEmitter.emit (domain.js:467:12)\n at endReadableNT (internal/streams/readable.js:1327:12)\n at processTicksAndRejections (internal/process/task_queues.js:80:21)”}
The node seems simple, but I must be missing a step. Can someone advise?
Hey @Martin_Beck, I noticed you never got a reply on this old thread after reviewing your support ticket. In general, you might want to open a new topic and mark it as question when struggling with an existing node as comments on resolved feature requests might easily get lost.
When appending a table row, the Coda node would match the columns in your Coda table with the keys of your n8n items. This behaviour is similar to for example the Google Sheets node. In other words, if you have a Coda table like this:
You would need to have an n8n item like this (with field names of Format and Description):
To adjust the structure of incoming items, you could use n8n’s Set node.
With the matching structure, the Coda node should work as expected:
Hope this helps!