‎Sep 08, 2023 02:50 AM - edited ‎Sep 08, 2023 02:50 AM
//Setup Start
let tableName = "🎵 Tracks"
let linkedField1Name = "Composer(s)"
let linkedField2Name = "Producer(s)"
let compiledLinkedFieldName = "Contributors (-mix)"
//Setup End
let {linkedField1Values, linkedField2Values, recordId} = input.config()
let table = base.getTable(tableName)
let compiledObject = new Object;
for (let record of linkedField1Values){
compiledObject[record] = recordId
console.log(record)
}
for (let record of linkedField2Values){
compiledObject[record] = recordId
}
let compiledArray = new Array;
for (let record in compiledObject){
compiledArray.push({id: record})
}
await table.updateRecordAsync(recordId, {
"Contributors (-mix)": compiledArray
})
Solved! Go to Solution.
‎Sep 14, 2023 02:00 AM
Solved it now by removing the push update and having the script output the result instead, then updating the record via Update Record action in the same automation. But thank you for your time and effort Sho!
//Setup Start
let tableName = "🎵 Tracks"
let linkedField1Name = "Composer(s)"
let linkedField2Name = "Producer(s)"
let compiledLinkedFieldName = "Unique Combinations"
//Setup End
let {linkedField1Values, linkedField2Values, recordId} = input.config()
let table = base.getTable(tableName)
let compiledObject = new Object;
for (let record of linkedField1Values){
compiledObject[record] = recordId
}
for (let record of linkedField2Values){
compiledObject[record] = recordId
}
let compiledArray = new Array;
for (let record in compiledObject){
compiledArray.push({id: record})
}
console.log(compiledArray)
output.set("compiledArray", compiledArray);
‎Sep 08, 2023 07:04 AM - edited ‎Sep 08, 2023 07:09 AM
Hi @Anton_Pettersso,
Linked table fields cannot have duplicate values.
Add an IF statement or use "[...new Set(compiledObject)]" to exclude duplicate values.
‎Sep 08, 2023 07:31 AM
for (let record of compiledObject){
compiledArray.push({id: record})
}
And, it's "of" here, not "in".
Check it out in console.log.
‎Sep 11, 2023 05:26 AM
Hey Sho, not sure how I would integrate that. Could you show me where in the script to add this?
‎Sep 11, 2023 07:23 PM
I've asked chat-gpt to do this for you.
It seems that by converting from object to array, duplicate values are not possible.
// Setup Start
let tableName = "🎵 Tracks";
let linkedField1Name = "Composer(s)";
let linkedField2Name = "Producer(s)";
let compiledLinkedFieldName = "Contributors (-mix)";
// Setup End
let { linkedField1Values, linkedField2Values, recordId } = input.config();
let table = base.getTable(tableName);
let compiledObject = {};
for (let record of linkedField1Values) {
compiledObject[record.id] = { id: record.id };
}
for (let record of linkedField2Values) {
compiledObject[record.id] = { id: record.id };
}
let compiledArray = Object.values(compiledObject);
await table.updateRecordAsync(recordId, {
[compiledLinkedFieldName]: compiledArray,
});
‎Sep 14, 2023 01:01 AM
Hah, I checked with chat-gpt and Bard as well, without any luck. And I get the same error message with this script...
‎Sep 14, 2023 01:05 AM
Maybe "Composer(s)" and "Producer(s)" are different tables?
‎Sep 14, 2023 01:15 AM - edited ‎Sep 14, 2023 01:20 AM
No, same table. I made a copy of the setup in a new base here.
‎Sep 14, 2023 02:00 AM
Solved it now by removing the push update and having the script output the result instead, then updating the record via Update Record action in the same automation. But thank you for your time and effort Sho!
//Setup Start
let tableName = "🎵 Tracks"
let linkedField1Name = "Composer(s)"
let linkedField2Name = "Producer(s)"
let compiledLinkedFieldName = "Unique Combinations"
//Setup End
let {linkedField1Values, linkedField2Values, recordId} = input.config()
let table = base.getTable(tableName)
let compiledObject = new Object;
for (let record of linkedField1Values){
compiledObject[record] = recordId
}
for (let record of linkedField2Values){
compiledObject[record] = recordId
}
let compiledArray = new Array;
for (let record in compiledObject){
compiledArray.push({id: record})
}
console.log(compiledArray)
output.set("compiledArray", compiledArray);
‎Sep 14, 2023 02:10 AM
Congrats!
I didn't know how to set variables in this way of writing, so I learned a lot too.
let {linkedField1Values, linkedField2Values, recordId} = input.config()