The following code can be used to retrieve Salesforce Chatter User Profiles including the User Influence Ranking. If you have any questions, please feel free to email me at docbook.xml@gmail.com
function retrieveChatterUserProfiles() { var lock = LockService.getPublicLock(); if (lock.tryLock(300)) { // Consumer key and consumer secret must be obtained from http://developer.force.com/. // Instruction at http://wiki.developerforce.com/page/Chatter_API var consumerKey = ""; // Enter OAuth Consumer Key here var consumerSecret = ""; // Enter OAuth Consumer Secret here // Begin boilerplate var oauth = UrlFetchApp.addOAuthService("Chatter user data"); 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 user data", 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 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Profiles"); sheet.clear(); sheet.appendRow(["id", "url", "name", "email", "managerName", "followers", "followingPeople", "chatterInfluenceRank", "chatterInfluencePercentile", "aboutMe"]); var nextPageUrlSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("nextPageUrl"); ///services/data/v24.0/chatter/users/?pageSize=100 var nextPageUrl = "/services/data/v24.0/chatter/users/?pageSize=100"; // Begin sample of Chatter Rest API while (nextPageUrl){ var feedUrl = instanceUrl + nextPageUrl; // Chatter API URL var response = UrlFetchApp.fetch(feedUrl, { method : "GET", headers : { "Authorization" : "OAuth " + sessionId } }); var feed = JSON.parse(response.getContentText()); nextPageUrl = feed.nextPageUrl; for (var i=0; i<feed.users.length; i++){ var chatterInfluenceRank = feed.users[i].chatterInfluence.rank; var chatterInfluencePercentile = feed.users[i].chatterInfluence.percentile; var name = feed.users[i].name; var email = feed.users[i].email; var id = feed.users[i].id; var url = feed.users[i].url; var followers = feed.users[i].followersCount; var followingPeople = feed.users[i].followingCounts.people; var aboutMe = feed.users[i].aboutMe; var managerName = feed.users[i].managerName; sheet.appendRow([id, url, name, email, managerName, followers, followingPeople, chatterInfluenceRank, chatterInfluencePercentile, aboutMe]); } Logger.log(nextPageUrl); } } } |