Skip to main content
Solved

Patch Request from google apps script


Forum|alt.badge.img+8

I just can’t find the right way to format my request. I’m trying to update a single field in a single record. but keep hitting - INVALID_REQUEST_MISSING_FIELDS",“message”:"Could not find field “fields” in the request body

Getting data is fine.

After a few hours trying different things I’m asking for help what am I missing? Any help appreciated

API and Base ID Blanked out

function apiCall(){

var API_KEY = ‘XXXXXXXXX’;
var root = ‘https://api.airtable.com/v0’;

var baseId = ‘XXXXXXXXXXXX’;
var tableName = encodeURIComponent(‘Travels’);
var recordId = “recSaJTXSBu1g8CBd”
var endpoint = ‘/’ + baseId + ‘/’ + tableName + ‘/’ + recordId;

var params = {
‘method’: ‘PATCH’,
‘muteHttpExceptions’: true,
‘Content-Type’: ‘application/json’,
‘headers’: {
‘Authorization’: 'Bearer ’ + API_KEY
},

    "fields" : {
      "Declaration link": "https://docs.google.com/spreadsheets/d/13V8gO7511yJ0830IpiKXtfYfKeuVVSJ8uqbXR-9Ne8w/edit#gid=0"
     }

};

var response = UrlFetchApp.fetch(root + endpoint, params);
Logger.log(response.getContentText());
}

Best answer by Lee_Thomas

Bill_French wrote:

I think you have at least two issues:

  1. The API requires a record ID to tell it which record should be patched.
  2. The fields element is freely floating in the params object but should be contained in a payload element and stringified. (see example)


Thanks Bill , I did have the record id but the code is not super readable on the forum. Also I had tried with the payload also but I was getting the same error. But your code helped me see what I think was the mistake. The content type was stored outside of the headers in my params.

for others working code below.

View original
Did this topic help you find an answer to your question?

3 replies

Forum|alt.badge.img+19
  • Inspiring
  • 3264 replies
  • February 23, 2021

I think you have at least two issues:

  1. The API requires a record ID to tell it which record should be patched.
  2. The fields element is freely floating in the params object but should be contained in a payload element and stringified. (see example)


Forum|alt.badge.img+8
  • Author
  • Inspiring
  • 10 replies
  • Answer
  • February 23, 2021
Bill_French wrote:

I think you have at least two issues:

  1. The API requires a record ID to tell it which record should be patched.
  2. The fields element is freely floating in the params object but should be contained in a payload element and stringified. (see example)


Thanks Bill , I did have the record id but the code is not super readable on the forum. Also I had tried with the payload also but I was getting the same error. But your code helped me see what I think was the mistake. The content type was stored outside of the headers in my params.

for others working code below.


Justin_Barrett
Forum|alt.badge.img+20
Lee_Thomas wrote:

Thanks Bill , I did have the record id but the code is not super readable on the forum. Also I had tried with the payload also but I was getting the same error. But your code helped me see what I think was the mistake. The content type was stored outside of the headers in my params.

for others working code below.


Use the preformatted text styler in the editor toolbar to format the code for easier reading. For multi-line code snippets, wrap the code in pairs of graves triplets → ```

Example:

```
// This is some code
let something = “Something”;
```

…becomes…

// This is some code
let something = "Something";

Reply