Nov 04, 2024 03:59 AM
Hi all,
I am trying to update a select field options, as mentioned in the documentation.
It would seem that I can not update the options of a selectField within my automation 'Run a script' module.
Documentation :
Errors :
Code:
// Create new entries if necessary
const uniqueUpdateOptions = sortedRecords.map(record => record.fields['Price Wave Number'].name);
const newOptions = getNewOptions(uniqueUpdateOptions);
const selectField = priceWavesTable.getField('Price Wave Number');
await selectField.updateOptionsAsync({ choices: newOptions }) // typescript is not sure this will be of type singleSelect
function getNewOptions(updateOptions) {
// Get the existing options for the "Price Wave Number" field
const selectField = priceWavesTable.fields
.filter(field => field.name === "Price Wave Number" && field.type === "singleSelect")[0];
if (!selectField) return;
const selectFieldOptions = selectField.options?.choices || [];
if (!selectFieldOptions) return;
// Identify options that need to be added
const optionsToAdd = updateOptions.filter(updateOption =>
!selectFieldOptions.some(fieldOption => fieldOption.name === updateOption)
) || [];
// If there are options to add, proceed with the update
if (optionsToAdd.length > 0) {
const newOptions = [
...selectFieldOptions, // Include existing options
...optionsToAdd.map(optionName => ({ name: optionName })) // Add new options
];
return newOptions;
}
return [];
}
Would you have any thoughts as to why this is ?
Is this just a feature that we can not update options in scripting so the doc needs update?
Thank you!
Nov 04, 2024 04:23 AM
Hi,
Yes, it's not possible to update options by automation scripting. You can do it only with scripting extension. I'm not sure about Web API, maybe it's also possible.
I wrote post about similar problem, which I solved by creating another webhook-based automation for that purpose. Automation can still add option to the select field when you use usual 'Update record' step. Thus, I choose random record (indeed, it's query.records[0]), pass record ID, record value of that field (I have only one such field and it's name hardcoded in my script) and array of updates.
Then second automation using repeating group for each array value - it updates record with current repeating group value, then puts old value back. The primary script enters loop, where it checks field options - the list of values. As soon as last array value appear in field options, script exits loop and proceed with further updates.
Well maybe it can be done in a more reasonable way, but for now it's ok for me.
Here you can find more details