Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yukop/3115759 to your computer and use it in GitHub Desktop.
Save yukop/3115759 to your computer and use it in GitHub Desktop.
fetchActivitySearch.gs
var USER_ID = '106825171914368756519';
var API_KEY = 'AIzaSyCJU1qbrA9tWSkEIVBmzTKxvgo29ZwzirM';
var MAX_REQUEST_NUM = 5;
var queryParams = {
maxResults: 20,
orderBy: "recent",
// fields: "items(actor%2Fid%2Cobject(actor%2Fid%2Cattachments(content%2CfullImage%2Furl)%2Cid)%2Ctitle%2Cverb)%2CnextPageToken",
fields: "items(actor%2Fid%2Cobject(actor%2Fid%2Cattachments%2FfullImage%2Furl%2Ccontent%2Cid%2CoriginalContent)%2Ctitle%2Curl)%2CnextPageToken",
key: API_KEY
}
function main(){
fetchAndSetActivityListToSheet();
}
function fetchAndSetActivityListToSheet() {
var hash = 'geeklatte';
var activityList = fetchActivityListByhash(hash);
setActivityListToSheet(activityList);
activityList;
}
function setActivityListToSheet(activityList) {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var range = doc.getRange('a' + 1);
var rowOffset = 0;
var colOffset = 0;
for(var i = 0, l = activityList.length; i < l; i++){
var activity = activityList[i];
range.offset(rowOffset, colOffset+0).setValue(activity.title);
range.offset(rowOffset, colOffset+1).setValue(activity.photoUrl);
rowOffset++;
}
}
function buildGplusActivitiesSearchUrl(params){
var baseUrl = 'https://www.googleapis.com/plus/v1/activities?';
var paramStrs = [];
for (var key in params){
if (params[key] != undefined) {
paramStrs.push(key + '=' + params[key]);
}
}
return baseUrl + paramStrs.join('&');
}
function fetchActivityListByhash(hash) {
var pageToken = undefined;
var allFetched = [];
for(var i = 0; i < MAX_REQUEST_NUM; i++){
var fetched = fetchOneActivityListByHash (hash, pageToken);
pageToken = fetched.pageHash;
allFetched = allFetched.concat(fetched.results);
}
return allFetched;
}
function fetchOneActivityListByHash (hash, pageToken) {
hash = '%23' + hash;
queryParams.query = hash;
queryParams.pageToken = pageToken;
var gplusActivitiesSearchUrl = buildGplusActivitiesSearchUrl(queryParams);
var response = UrlFetchApp.fetch(gplusActivitiesSearchUrl);
var returnedJson = Utilities.jsonParse(response.getContentText());
var nextPageToken = returnedJson.nextPageToken;
var posts = returnedJson.items;
var results = new Array();
for (var i = 0, l = posts.length; i < l; i++) {
var thisPost = posts[i];
// if ((thisPost.actor.id === USER_ID || (thisPost.object.actor && thisPost.object.actor.id === USER_ID)) && objectId !== thisPost.object.id) {
if (thisPost.actor.id === USER_ID || (thisPost.object.actor && thisPost.object.actor.id === USER_ID)) {
var toPush = { title: thisPost.title, photoUrl: thisPost.object.attachments[0].fullImage.url};
var objectId = thisPost.object.id;
results.push(toPush);
}
}
return { results: results, pageHash: nextPageToken };
}
function setData() {
var range = doc.getRange('a' + lastRow);
var setData_ = function(field, colOffset) {
setData(range, field, colOffset)
}
setData_(title, 0);
lastRow++;
}
function _fetchActivityListByHash(){
return;
}
var USER_ID = '106825171914368756519';
var API_KEY = 'AIzaSyCJU1qbrA9tWSkEIVBmzTKxvgo29ZwzirM';
var MAX_REQUEST_NUM = 5;
var queryParams = {
maxResults: 20,
orderBy: "recent",
fields: "items(actor(displayName%2Cid)%2Cobject(actor%2Cattachments%2FfullImage%2Furl%2Ccontent%2Cplusoners%2Creplies%2Cresharers)%2Cpublished%2Ctitle%2Curl%2Cverb)%2CnextPageToken",
key: API_KEY
}
function testFetchActivityListByhash() {
var hash = 'geeklatte';
var activityList = fetchActivityListByhash(hash);
activityList;
}
function testSetActivityListToSheet() {
var hash = 'geeklatte';
var activityList = fetchActivityListByhash(hash);
// var activityList = [
// { title: "My Title", photoUrl: "http://my.photo.url/"},
// { title: "Another title", photoUrl: "http:another.photo.url/" }
// ];
setActivityListToSheet(activityList);
activityList;
}
function main() {
var hash = 'geeklatte';
var pageToken = undefined;
var lastRow = 1;
for (var i = 0; i < MAX_REQUEST_NUM; i++) {
if (!pageToken && i) {
fetchOneActivityListByHash(hash, pageToken);
}
}
}
function setActivityListToSheet(activityList) {
var doc = SpreadsheetApp.getActiveSpreadsheet();
// var a = activityList[0];
var range = doc.getRange('a' + 1);
var rowOffset = 0;
var colOffset = 0;
// range.offset(rowOffset, colOffset+0).setValue(a.title);
// range.offset(rowOffset, colOffset+1).setValue(a.photoUrl);
for(var i = 0, l = activityList.length; i < l; i++){
var activity = activityList[i];
range.offset(rowOffset, colOffset+0).setValue(activity.title);
range.offset(rowOffset, colOffset+1).setValue(activity.photoUrl);
rowOffset++;
}
}
function buildGplusActivitiesSearchUrl(params){
var baseUrl = 'https://www.googleapis.com/plus/v1/activities?';
var paramStrs = [];
for (var key in params){
if (params[key] != undefined) {
paramStrs.push(key + '=' + params[key]);
}
}
return baseUrl + paramStrs.join('&');
}
function fetchActivityListByhash(hash) {
var pageToken = undefined;
var allFetched = [];
for(var i = 0; i < MAX_REQUEST_NUM; i++){
var fetched = fetchOneActivityListByHash (hash, pageToken);
pageToken = fetched.pageHash;
allFetched = allFetched.concat(fetched.results);
}
return allFetched;
}
function fetchOneActivityListByHash (hash, pageToken) {
hash = '%23' + hash;
queryParams.query = hash;
queryParams.pageToken = pageToken;
var gplusActivitiesSearchUrl = buildGplusActivitiesSearchUrl(queryParams);
var response = UrlFetchApp.fetch(gplusActivitiesSearchUrl);
var returnedJson = Utilities.jsonParse(response.getContentText());
var nextPageToken = returnedJson.nextPageToken;
var posts = returnedJson.items;
var results = new Array();
for (var i = 0, l = posts.length; i < l; i++) {
var thisPost = posts[i];
if (thisPost.actor.id === USER_ID || (thisPost.object.actor && thisPost.object.actor.id === USER_ID)) {
//results[i] = { title: thisPost.title, photoUrl: thisPost.object.attachments[0].fullImage.url};
var toPush = { title: thisPost.title, photoUrl: thisPost.object.attachments[0].fullImage.url};
results.push(toPush);
}
}
//return results;
return { results: results, pageHash: nextPageToken };
}
function setData() {
var range = doc.getRange('a' + lastRow);
var setData_ = function(field, colOffset) {
setData(range, field, colOffset)
}
setData_(title, 0);
lastRow++;
}
function _fetchActivityListByHash(){
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment