// Ottieni i parametri di input
let config = input.config();
let recordCRM_id = config.recordCRM_id
let ruolo = config.ruolo;
let pagamenti = config.pagamenti;
let minorenne = config.minorenne;
// -nocheck
let baseID = 'IDBASE'; // ID della base LabOratorium
let tableID = 'IDTABLE'; // ID della tabella in cui si trova il record da aggiornare
let recordID = recordCRM_id; // ID del record da aggiornare
let personalAccessToken = 'TOKEN'; // Il tuo Personal Access Token di Airtable
// Funzione per calcolare la formula
function calculateFormula(ruolo, pagamenti, minorenne) {
let result = "";
if (ruolo) {
result += "Loreto24_" + ruolo;
}
if (ruolo && pagamenti.includes("Acconto")) {
result += ", Loreto24_Acconto";
} else if (pagamenti.includes("Acconto")) {
result += "Loreto24_Acconto";
}
if ((ruolo || pagamenti.includes("Acconto")) && minorenne === "SI") {
result += ", Loreto24_Minorenne";
} else if (minorenne === "SI") {
result += "Loreto24_Minorenne";
}
if ((ruolo || pagamenti.includes("Acconto") || minorenne === "SI") && pagamenti.includes("Saldo")) {
result += ", Loreto24_Saldo";
} else if (pagamenti.includes("Saldo")) {
result += "Loreto24_Saldo";
}
if (pagamenti.includes("Tutto")) {
result += ", Loreto24_Tutto";
}
return result;
}
// Funzione per ottenere i valori attuali del campo "Liste" nel record
async function getCurrentListValues() {
let url = `https://api.airtable.com/v0/${baseID}/${tableID}/${recordID}`;
let response = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${personalAccessToken}`,
},
});
let data = await response.json();
return data.fields.Liste || [];
}
// Calcola il risultato della formula
let formulaResult = calculateFormula(ruolo, pagamenti, minorenne);
// Ottieni i valori attuali del campo "Liste" nel record
let currentListValues = await getCurrentListValues();
// Filtra i valori esistenti escludendo quelli che contengono "Loreto24"
let filteredListValues = currentListValues.filter(value => !value.includes("Loreto24"));
// Aggiungi i nuovi valori calcolati dalla formula ai valori filtrati
let updatedListValues = [...filteredListValues, formulaResult];
// Esegui la richiesta PATCH per aggiornare il record in Airtable con i nuovi valori del campo "Liste"
let url = `https://api.airtable.com/v0/${baseID}/${tableID}/${recordID}`;
let response = await fetch(url, {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${personalAccessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"fields": {
"Liste": updatedListValues
}
})
});
// Controlla lo status della risposta
if (response.ok) {
console.log(`Record ${recordID} updated successfully with updated List values.`);
} else {
console.error(`Error updating record ${recordID}: ${response.statusText}`);
}
why I have this error: "Error updating record rechDqKKlD7FDp0tO: Unprocessable Entity"???
Field Liste is a linked field to another table.