Help

Cannot Perform “PATCH” Request Using Google App Script

Topic Labels: API
Solved
Jump to Solution
7547 14
cancel
Showing results for 
Search instead for 
Did you mean: 
Dwayne_Hogan
5 - Automation Enthusiast
5 - Automation Enthusiast

When attempting to use the PATCH method in Google Apps Script , I get an error INVALID_REQUEST_UNKNOWN .

I’m able to do a POST and GET request. Tested my credentials using CURL and this worked. Tried the “HTTP Override” hack and that did not work.

function postToAirtable() {
  var url = 'https://api.airtable.com/v0/appxs9P0mXsqcXs5R/Outreach';
  var data = {
    'fields': {

      'Task': '<Task Name>',
      'Outreacher': '<Person>',
      'Month': 'May ',
      'Status': 'In Progress',
      'Go Live Date': '2016-03-01',
      'Copy Card Link': [
        'recONM5ul2oaG6yKi'
      ],
      'Label': 'DET'
    }
  };

  var headers = {'Authorization':'Bearer ' + '<API KEY>'};

  var options = {
    'contentType':'application/json',
    'method' : 'PATCH',
    'headers': headers,
    // Convert the JavaScript object to a JSON string.
    'payload' : JSON.stringify(data),
  };
  //Logger.log(options);   

  Logger.log(UrlFetchApp.fetch(url, options));


};
1 Solution

Accepted Solutions
Giovanni_Briggs
6 - Interface Innovator
6 - Interface Innovator

Every record in Airtable has a unique record ID. You receive this record ID whenever you perform a GET or POST request.

When doing an update (PUT or PATCH) or delete (DELETE) operation, you must provide the Airtable record ID for the record you are trying to modify. The record ID should be in the URL path after the table name.

For example, if you are trying to do a PATCH on your record with an record ID “rec123ABC987”, your URL would look like:

    var url = 'https://api.airtable.com/v0/appxs9P0mXsqcXs5R/Outreach/rec123ABC987';

See Solution in Thread

14 Replies 14
Giovanni_Briggs
6 - Interface Innovator
6 - Interface Innovator

Every record in Airtable has a unique record ID. You receive this record ID whenever you perform a GET or POST request.

When doing an update (PUT or PATCH) or delete (DELETE) operation, you must provide the Airtable record ID for the record you are trying to modify. The record ID should be in the URL path after the table name.

For example, if you are trying to do a PATCH on your record with an record ID “rec123ABC987”, your URL would look like:

    var url = 'https://api.airtable.com/v0/appxs9P0mXsqcXs5R/Outreach/rec123ABC987';
Dwayne_Hogan
5 - Automation Enthusiast
5 - Automation Enthusiast

That worked perfect. Thanks for your help

Jayson_Caipan
5 - Automation Enthusiast
5 - Automation Enthusiast

hello, can i get some help? how to post to airtable using google app script?

The script I used above is how I post to Airtable. I’m not really a developer…I just hacked my way through it. But the basic process I use is to pull all of my data into Google Sheets, then use the script in this thread to push that sheet into Airtable.

@Jayson_Caipan,

Here’s a simple script I use to patch updates from Google Apps Script. It’s very similar to the above example.

image.png

A key issue that many people run into writing integration code is the need to URI encode anything that appears in the URL. In the example above, “Outreach” is the table name, but if it had spaces (i.e., Outreach Activites), the example code would fail.

Thank you Bill, i really appreciate it.

@Bill.French, how can i count the record in my table? thanks.

To count the number of records in a table using the API unfortunately requires fetching every record in the table into an array and then using the array.length method unless you keep a field of record numbers incremented.

These are each crappy solutions - perhaps someone in the forum knows a better way using native Airtable functions.

The API currently has no count methods, but you can request a dump of the table and constrain the field schema to just one field making the process faster and a bit more optimized.

Thanks for the info, last question can i call multiple html page to the script?

Thanks alot for your time answering all my question, i really appreciate you…