Journal‎ > ‎

Accessing Salesforce Chatter APIs using Google Apps Script

posted Jan 29, 2012 6:18 PM by Saqib Ali   [ updated Feb 1, 2012 10:31 AM ]
Google Apps Script for accessing Chatter APIs :

function retrieveChatterFeed() {
  
  
  // Consumer key and consumer secret must be obtained from http://developer.force.com/.
  // Instruction at http://wiki.developerforce.com/page/Chatter_API
  var consumerKey = ""; // Add consumer key here
  var consumerSecret = ""; // Add consumer secret here

  // Begin boilerplate. Based on OAuth setup by Shinichi Tomita
  var oauth = UrlFetchApp.addOAuthService("chatter");
  oauth.setAccessTokenUrl("https://login.salesforce.com/_nc_external/system/security/oauth/AccessTokenHandler");
  oauth.setRequestTokenUrl("https://login.salesforce.com/_nc_external/system/security/oauth/RequestTokenHandler");
  oauth.setAuthorizationUrl("https://login.salesforce.com/setup/secur/RemoteAccessAuthorizationPage.apexp?oauth_consumer_key="+encodeURIComponent(consumerKey));
  oauth.setConsumerKey(consumerKey);
  oauth.setConsumerSecret(consumerSecret);


  var loginUrl = "https://login.salesforce.com/services/OAuth/u/23.0";
  var options = { method : "POST", oAuthServiceName : "chatter", oAuthUseToken : "always" };
  var result = UrlFetchApp.fetch(loginUrl, options);
  
  var sfResponse = Xml.parse(result.getContentText(), true).getElement();
  
  var sessionId = sfResponse.getElement("sessionId").getText();
  var serverUrl = sfResponse.getElement("serverUrl").getText();
  var instanceUrl = serverUrl.match(/^https?:\/\/[^\/]+/)[0];

  // End boilerplate
  
  
  // Begin sample of Chatter Rest API
  var feedUrl = instanceUrl + "/services/data/v23.0/chatter/feeds/news/me/feed-items"; // Chatter API URL
  var response = UrlFetchApp.fetch(feedUrl, { method : "GET", headers : { "Authorization" : "OAuth "+sessionId } });
    
  var feed = JSON.parse(response.getContentText());
  
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  var temp = feed.items.length;
  for (var i=0; i<feed.items.length; i++){
    var chatterText = feed.items[i].body.text;
    var chatterActor = feed.items[i].actor.name;
    sheet.appendRow([chatterText, chatterActor]);
  }
  // End sample of Chatter Rest API
  
}