Skip to content

Instantly share code, notes, and snippets.

@chadhuber
Forked from laurenancona/twitterUserInfoFunctions.gs
Last active October 27, 2016 06:16
Show Gist options
  • Save chadhuber/f65dd050964f6b7b6a48636a909c2874 to your computer and use it in GitHub Desktop.
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
// 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