Help

Save the date! Join us on October 16 for our Product Ops launch event. Register here.

Code doesn't update record in another database

268 0
cancel
Showing results for 
Search instead for 
Did you mean: 
lucacordone
4 - Data Explorer
4 - Data Explorer

 

// 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.

0 Replies 0