48

I want to send an HTTP request to some REST service from Google drive spreadsheet.

Is this possible?

Muhammad Hewedy
  • 29,102
  • 44
  • 127
  • 219

2 Answers2

42

Using Google Apps Script, you can make HTTP requests to external APIs from inside Google Docs/Sheets/etc. using the UrlFetchApp class:

var url = 'https://gdata.youtube.com/feeds/api/videos?'
    + 'q=skateboarding+dog'
    + '&start-index=21'
    + '&max-results=10'
    + '&v=2';
var response = UrlFetchApp.fetch(url);
Logger.log(response);

Note that:

This service requires the https://www.googleapis.com/auth/script.external_request scope. In most cases Apps Script automatically detects and includes the scopes a script needs, but if you are setting your scopes explicitly you must manually add this scope to use UrlFetchApp.

ref: https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

pherris
  • 17,195
  • 8
  • 42
  • 58
  • 2
    Looks like function in your Sheet doesn't work anymore. – kolobok Jan 29 '20 at 19:24
  • 1
    The script was added by someone else - it looks like Google now requires that permissions be granted but also the Facebook API he was using is now deprecated. I'll update the answer. – pherris Apr 28 '20 at 15:12
36

Yes, you can use IMPORTDATA. It's designed to work with CSV data but will load any URL you throw at it:

=IMPORTDATA("https://stackoverflow.com/q/23917189/209828")

New line characters start a new row in the spreadsheet and the values shown in the cells are referenceable. Put this formula in A1 of its own sheet and reference cells from different sheets.

Google Sheets showing example usage of IMPORTDATA function

Matt
  • 9,068
  • 12
  • 64
  • 84