Skip to content
Multi-select fields...
 
Notifications
Clear all

Multi-select fields in Airtable and Notion integrations

11 Posts
4 Users
0 Reactions
3 Views
artildo
(@artildo)
Posts: 6
Active Member
Topic starter
 

I've discovered that I cannot send Multi-select Fields from Notion to Airtable. I can see individual select items, but I'd like to be able to select them all and send them as a comma-separated string. Ideally, the best solution would be to assign a Multiple select field in Airtable, but callin.io does not currently support this field type.

Is it feasible to transmit all these values as a single string?

See the attached screenshot:

 
Posted : 11/06/2021 10:47 pm
RicardoE105
(@ricardoe105)
Posts: 18
Active Member
 

Unlike the Notion node, the Airtable node requires the data you intend to insert to be provided in the input. If the multi_select field shares the same name in both Notion and Airtable, no adjustments are necessary. Should the names differ, you'll need a Set node to rename the field.

In the example below, I had a multiselect field in Notion named "multiselect" and wanted to map it to a multi_select field called Category1 in Airtable.

However, I agree with you. Both nodes ought to function similarly. Unfortunately, this isn't the case because when we developed the Airtable node, we lacked the capability to create fields "dynamically" based on their type. We later introduced this functionality with the Notion node. In the future, all nodes with varying field types (such as Airtable) will operate like the Notion node.

Is it possible to send all such values as a string?

You don't need to send a string, but rather an array of strings. For instance, if you have two potential options: option1 and option2. The data should be sent as field: ['option1", "option2" ], which is incidentally how Notion returns the data.

https://www.loom.com/share/7c52ef887c2d4759912c12f5ec911b5d

Example workflow

{
“nodes”: [
{
“parameters”: {},
“name”: “Start”,
“type”: “n8n-nodes-base.start”,
“typeVersion”: 1,
“position”: [
250,
300
]
},
{
“parameters”: {
“resource”: “databasePage”,
“operation”: “getAll”,
“databaseId”: “=c7f1bbde-9254-49dc-8fd5-646c4ad731aa”,
“options”: {}
},
“name”: “Notion”,
“type”: “n8n-nodes-base.notion”,
“typeVersion”: 1,
“position”: [
520,
300
],
“credentials”: {
“notionApi”: “asasasas”
}
},
{
“parameters”: {
“operation”: “append”,
“application”: “appKUpd1rLmDvMCeZ”,
“table”: “Movies”,
“options”: {}
},
“name”: “Airtable”,
“type”: “n8n-nodes-base.airtable”,
“typeVersion”: 1,
“position”: [
900,
300
],
“credentials”: {
“airtableApi”: “ricardo@callin.io
}
},
{
“parameters”: {
“keepOnlySet”: true,
“values”: {
“string”: [
{
“name”: “Category1”,
“value”: “={{$node["Notion"].json["multi-select"]}}”
},
{
“name”: “Cat”,
“value”: “asasas”
}
]
},
“options”: {}
},
“name”: “Set”,
“type”: “n8n-nodes-base.set”,
“typeVersion”: 1,
“position”: [
710,
300
]
}
],
“connections”: {
“Start”: {
“main”: [
[
{
“node”: “Notion”,
“type”: “main”,
“index”: 0
}
]
]
},
“Notion”: {
“main”: [
[
{
“node”: “Set”,
“type”: “main”,
“index”: 0
}
]
]
},
“Set”: {
“main”: [
[
{
“node”: “Airtable”,
“type”: “main”,
“index”: 0
}
]
]
}
}
}

 
Posted : 12/06/2021 2:26 am
artildo
(@artildo)
Posts: 6
Active Member
Topic starter
 

Thank you. I understand now; Notion and Airtable interfaces do have some distinctions. For Airtable, you only need to specify the field names. For Notion, you specify both field names and formulas.

After some experimentation, I successfully transferred select fields from Notion to Airtable.

However, when attempting the reverse process, I encountered a type issue. It appears that arrays are not compatible, and I need to "hardpick" the values. An error occurs when I try to pass an array to a Notion Multi-select field. Please see the video:

 
Posted : 12/06/2021 3:22 pm
RicardoE105
(@ricardoe105)
Posts: 18
Active Member
 

Yes, that's the expected behavior. When setting a multi-select property in Notion, you need to provide an array of IDs. It's different from Airtable, where you might be able to reference options by their names (I'll need to verify this). If using names is possible, it would certainly simplify scenarios like this. For now, you can implement a function node to map your multi-select option names to their corresponding IDs in Notion.

json
[
{
"id": "id of the option 1 in notion"
},
{
"id": "id of the option 2 in notion"
}
]

 
Posted : 13/06/2021 2:16 am
RicardoE105
(@ricardoe105)
Posts: 18
Active Member
 

Okay, I've just tested it, and Notion does indeed support setting multi-selects using both the name and the ID. Currently, it's using the ID, which is why it's failing. If I switch it to use the name, that would constitute a breaking change. I need to consider the best way to properly implement this. In the interim, you can proceed with the method I suggested earlier. I'll keep you updated.

 
Posted : 13/06/2021 2:32 am
artildo
(@artildo)
Posts: 6
Active Member
Topic starter
 

It seems necessary to pull Notion database data to view all available options and then proceed with matching.
Thank you, and I will await the update.

 
Posted : 13/06/2021 11:30 am
jan
 jan
(@jan)
Posts: 39
Eminent Member
 

A fix for that issue was released with callin.io@0.124.0

 
Posted : 13/06/2021 6:11 pm
Daniel_Barra
(@daniel_barra)
Posts: 3
New Member
 

Hello Jan,

Is it now possible to set select or multi-select fields using their names?

I'm attempting to do this and still encountering an error message. I'm currently using version 0.126.

Could you please advise?

 
Posted : 28/06/2021 2:46 pm
RicardoE105
(@ricardoe105)
Posts: 18
Active Member
 

Welcome to the community.

Currently, you can use names exclusively with the multi_select type. I attempted to add this functionality to the select type, but it would have constituted a breaking change, potentially disrupting numerous workflows. We will likely address this once node versioning is released.

 
Posted : 28/06/2021 3:05 pm
Daniel_Barra
(@daniel_barra)
Posts: 3
New Member
 

Thank you!
I understand and will adapt my workflow.
Just tested the multiselect and it worked like a charm.

 
Posted : 28/06/2021 3:19 pm
Daniel_Barra
(@daniel_barra)
Posts: 3
New Member
 

Just sharing my solution for anyone facing a similar issue.

Since one of my columns needed to be a select type (as it was my GroupBy item for the board), I had to transform the data.

Initially, I used the Notion node to retrieve the ID for each item I intended to add (as shown in the image). As I'm not proficient in JavaScript and my coding skills are quite basic, I opted to send my data via the Google Sheets node to SHEET#1. I then placed the Name and its corresponding ID in SHEET#2. Following that, in SHEET#3, I mirrored all cells from SHEET#1 (e.g., SHEET#3!A1 = SHEET#1!A1), with the exception of the column requiring the select type. For that specific column, I implemented a VLOOKUP to SHEET#2, using the value from SHEET#1 as the reference (e.g., SHEET#3!F1 = VLOOKUP(SHEET#1F1, SHEET#2!A:B, 2, FALSE)).

Subsequently, I utilized the Google Sheets node in callin.io to read the data from SHEET#3, which was already structured correctly for sending to the Notion node.

It was a straightforward method, but it achieved the desired outcome.

One peculiar observation was that even when sending data as a number (which was its format from sheets, and I chose to maintain the formatting), Notion did not recognize it as a number, leading to an error message. Changing the data type to text resolved the issue, but this might be something worth investigating further.

 
Posted : 29/06/2021 7:54 pm
Share: