Skip to main content
Hello! I don't understand why the linked field won't accept the value. What am I missing?
 
 
//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){
compiledObjecterecord] = recordId
console.log(record)
}

for (let record of linkedField2Values){
compiledObjecterecord] = recordId
}

let compiledArray = new Array;

for (let record in compiledObject){
compiledArray.push({id: record})
}

await table.updateRecordAsync(recordId, {
"Contributors (-mix)": compiledArray
})

Hi @Anton_Pettersso,

Linked table fields cannot have duplicate values.
Add an IF statement or use "[...new Set(compiledObject)]" to exclude duplicate values.


for (let record of compiledObject){

compiledArray.push({id: record})

}

And, it's "of" here, not "in".
Check it out in console.log.


Hi @Anton_Pettersso,

Linked table fields cannot have duplicate values.
Add an IF statement or use "[...new Set(compiledObject)]" to exclude duplicate values.


Hey Sho, not sure how I would integrate that. Could you show me where in the script to add this?


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,

});

 


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,

});

 


Hah, I checked with chat-gpt and Bard as well, without any luck. And I get the same error message with this script...


Maybe "Composer(s)" and "Producer(s)" are different tables?


Maybe "Composer(s)" and "Producer(s)" are different tables?


No, same table. I made a copy of the setup in a new base here.


Maybe "Composer(s)" and "Producer(s)" are different tables?


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);

 


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()

 


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);

 


Rad, this helped me solve a similar issue I was facing regarding linked records in the automation environment.

 


Reply