Forked from laurenancona/twitterUserInfoFunctions.gs
Last active
October 27, 2016 06:16
-
-
Save chadhuber/f65dd050964f6b7b6a48636a909c2874 to your computer and use it in GitHub Desktop.
Add custom functions to a Google sheet to pull user info directly from Twitter REST API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Based on a script by @laurenancona here: | |
// https://gist.github.com/laurenancona/1f3b8ce7a50e7d24ad04adccebce3fa3 | |
// Which was based on script by @SarahMarshall here: | |
// http://sarahmarshall.io/post/70812214349/how-to-add-twitter-follower-counts-to-a-google | |
// For these keys, create an application at https://dev.twitter.com | |
var CONSUMER_KEY = 'INSERT CONSUMER KEY'; | |
var CONSUMER_SECRET = 'INSERT CONSUMER SECRET'; | |
var BASE_API_URL = "https://api.twitter.com/1.1/"; | |
// Get follower count of user | |
function getTwitterUserFollowers(id) { | |
var url = BASE_API_URL + "users/show.json?screen_name=" + id; | |
return twitterRequest(url).followers_count; | |
} | |
// Get count of tweets by user | |
function getTwitterUserTweetCount(id) { | |
var url = BASE_API_URL + "users/show.json?screen_name=" + id; | |
return twitterRequest(url).statuses_count; | |
} | |
// Get verified status | |
function getTwitterUserVerified(id) { | |
var url = BASE_API_URL + "users/show.json?screen_name=" + id; | |
return twitterRequest(url).verified; | |
} | |
// Get user profile image | |
function getTwitterUserProfileImage(id) { | |
var url = BASE_API_URL + "users/show.json?screen_name=" + id; | |
return twitterRequest(url).profile_image_url_https; | |
} | |
// private function to request stuff from twitter | |
var twitterRequest = function(url) { | |
// Encode consumer key and secret | |
var tokenUrl = "https://api.twitter.com/oauth2/token"; | |
var tokenCredential = Utilities.base64EncodeWebSafe( | |
CONSUMER_KEY + ":" + CONSUMER_SECRET); | |
// Obtain a bearer token with HTTP POST request | |
var tokenOptions = { | |
headers : { | |
Authorization: "Basic " + tokenCredential, | |
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" | |
}, | |
method: "post", | |
payload: "grant_type=client_credentials" | |
}; | |
var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions); | |
var parsedToken = JSON.parse(responseToken); | |
var token = parsedToken.access_token; | |
// Authenticate Twitter API requests with the bearer token | |
var apiOptions = { | |
headers : { | |
Authorization: 'Bearer ' + token | |
}, | |
"method" : "get" | |
}; | |
var responseApi = UrlFetchApp.fetch(url, apiOptions); | |
if (responseApi.getResponseCode() == 200) { | |
// Parse the JSON encoded Twitter API response | |
var response = JSON.parse(responseApi.getContentText()); | |
return response; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment