Help

Re: Airtable script fetch put

2817 0
cancel
Showing results for 
Search instead for 
Did you mean: 
ALA_Staff
5 - Automation Enthusiast
5 - Automation Enthusiast

Hello,

Is there such thing as a fetch put? I am needing to do a put on an external api with the airtable scripting app. I was wondering what the best way to do it is? The external api is expecting a put method. I have successful used fetch for get and post but can’t seem to figure out the put. Thanks in advance!

14 Replies 14

Without seeing the actual code, this could take many days to debug.

I got it working. I had the fetch call in an async function. guess it didn’t like that. thanks for your help!

Hi @ALA_Staff ,

@Bill.French is right : thread is publicly shared but Solution’s Code isn’t yet.

Thanks in advance to share the Solution’s Code.

olπ

ALA_Staff
5 - Automation Enthusiast
5 - Automation Enthusiast

Hello, so when I initially had problems with the put, this was my code.

let options = (httpMethod, body) => {
    return {
        method: httpMethod,
        headers: {
            'Content-Type': "application/json",
            'api-auth-accountid': "...",
            'api-auth-applicationkey': "..."
        },
        'body': body
    }
};

let putUrl = "https://inventory.dearsystems.com/ExternalApi/v2/product";

let checkProductSupplierList = async (prod) => {
    // get supplierID to add to product suppliers list
    let linkedID = suppliers["linkedRecordIds"][0];
    let supplier = supplierRecords.getRecord(linkedID);
    let supplierID = supplier.getCellValue("SupplierID")[0];

    if (prod["Suppliers"].length === 0) {
        prod["Suppliers"] = [{ "SupplierID": supplierID, "DropShip": true }];
        prod["DropShipMode"] = "Optional Drop Ship";

        let putResults = await remoteFetchAsync(putUrl, options("put", JSON.stringify(prod)));
        let putObject = await putResults.json();
        console.log("put response", putObject)
    }

    for (let product of lines) {
        if (product["SKU"] === productSku) {

            let prod = await getProduct(product["ProductID"]);
            prod = prod['Products'][0];

            checkProductSupplierList(prod)
        }

        product["DropShip"] = true;
        break;
    }
}

What worked was this…

let checkProductSupplierList = (prod) => {

    let linkedID = suppliers["linkedRecordIds"][0];
    let supplier = supplierRecords.getRecord(linkedID);
    let supplierID = supplier.getCellValue("SupplierID")[0];

    if (prod["Suppliers"].length === 0) {

        prod["Suppliers"] = [{ "SupplierID": supplierID, "DropShip": true }];
        prod["DropShipMode"] = "Optional Drop Ship";
        return true;
    }
    return false;
}


for (let product of lines) {
    if (product["SKU"] === productSku) {

        let prod = await getProduct(product["ProductID"]);
        prod = prod['Products'][0];

        let putBool = checkProductSupplierList(prod);

        if (putBool) {

            let putUrl = "https://inventory.dearsystems.com/ExternalApi/v2/product";
            let putResults = await remoteFetchAsync(putUrl, options("put", JSON.stringify(prod)));
            let jsonObject = await putResults.json();
            output.inspect(jsonObject);
        }

        product["DropShip"] = true;
        break;
    }
}

Thank you very much @ALA_Staff ,
it’s interesting to see Code evolution in relation with this thread,
to understand what was talked about !

olπ