Hi @Stu_Smith !
If you are already using Integromat, would something like this work for you?

Use some trigger like e.g. webhook to trigger search for the reference record and use `remove` function in next step to take out the email from the array of Multiselect.
If you would like to do it with code. You could use the filter function to remove that one multiselect option that is equal to email that needs to be removed.
Let me know if that helps!
here is the code, apologies for plain text - it looks like the new community is not allowing me to embed code block (even from the toolbar...)
let table = base.getTable("Rooms");
let field = table.getField("Multiselect");
let emailToRemove = "email1"
let recordToUpdate ="recsjobMMpxlE7saG"
// Load all of the records in the table
let result = await table.selectRecordsAsync({fields: [field]});
let record = result.getRecord(recordToUpdate)
let updadatedRecord = await table.updateRecordAsync(recordToUpdate,{
"Multiselect": record.getCellValue("Multiselect").filter(option=>option.name!==emailToRemove)
})
here is the code, apologies for plain text - it looks like the new community is not allowing me to embed code block (even from the toolbar...)
let table = base.getTable("Rooms");
let field = table.getField("Multiselect");
let emailToRemove = "email1"
let recordToUpdate ="recsjobMMpxlE7saG"
// Load all of the records in the table
let result = await table.selectRecordsAsync({fields: [field]});
let record = result.getRecord(recordToUpdate)
let updadatedRecord = await table.updateRecordAsync(recordToUpdate,{
"Multiselect": record.getCellValue("Multiselect").filter(option=>option.name!==emailToRemove)
})
Thanks! I've tried to implement this, swapping out some of the variables to match mine but I'm getting the error that it can't find the record. Record ID is correct so I think I've gone wrong at the first line... what should be where you have "Rooms"?
Thanks! I've tried to implement this, swapping out some of the variables to match mine but I'm getting the error that it can't find the record. Record ID is correct so I think I've gone wrong at the first line... what should be where you have "Rooms"?
I tested it on a datase I was using, so in my case the table name was "Rooms". "Multiselect" is a name of column that is of a multiselect type and it has multiple emails as options.
The recordToUpdate is the ID of the record, from which one of the emails is supposed to be removed.
Let me know if this is making sense?
Yup. Makes sense. So I've changed it to the following using the table ID, column name from that table, and the two variable pulled from the form (see screengrab). The script input values are correct for the record ID and email address. I get this error: "Error: No record matching "product_record" found in query
at main on line 9"
let table = base.getTable("tbl8991KzXJJ7prHz");
let field = table.getField("Watchers");
let emailToRemove = "email1"
let recordToUpdate ="product_record"
// Load all of the records in the table
let result = await table.selectRecordsAsync({fields: [field]});
let record = result.getRecord(recordToUpdate)
let updadatedRecord = await table.updateRecordAsync(recordToUpdate,{
"Watchers": record.getCellValue("Watchers").filter(option=>option.name!==emailToRemove)
})
And replace it with
const { product_record, email1 } = input.config()
let emailToRemove = email1
let recordToUpdate = product_record
And replace it with
const { product_record, email1 } = input.config()
let emailToRemove = email1
let recordToUpdate = product_record
Oooh. Looks like it got a bit further but now we have this error:
ERROR
TypeError: Invalid arguments passed to recordQueryResult.getRecord(recordId):
• recordId should be a string, not an array
at main on line 11

This is for me the fastest way to access the input variables.
I kept your names there, but actually you could also shorten it by renaming the input variables to recordToUpdate and emailToRemove and only us this:
const { recordToUpdate, emailToRemove } = input.config()
Oooh. Looks like it got a bit further but now we have this error:
ERROR
TypeError: Invalid arguments passed to recordQueryResult.getRecord(recordId):
• recordId should be a string, not an array
at main on line 11
True,
Your product_record is a linked field - there could be multiple products linked, so it is array of recordIs if you are sure it is only 1 , you could do this:
let recordToUpdate = product_recordr0]
This will pick the first link from the array of records.
True,
Your product_record is a linked field - there could be multiple products linked, so it is array of recordIs if you are sure it is only 1 , you could do this:
let recordToUpdate = product_record[0]
This will pick the first link from the array of records.
Amazing! That worked! Thanks so much... no way I would've worked that out myself. 😁
The form will autocomplete via a link in the alert emails that go out with the record ID and email address. I'l;l limit it to single select so people don't try to add more.
Onto the next stage of testing.
Thanks again. ❤️