Skip to content

Instantly share code, notes, and snippets.

@yitsushi
Created August 28, 2012 18:22
Show Gist options
  • Save yitsushi/3501711 to your computer and use it in GitHub Desktop.
Save yitsushi/3501711 to your computer and use it in GitHub Desktop.
Google App Script for Google Form: get displayName from Google+ ID
/**
* Set a trigger:
* onFormSubmit -> getDisplayName
*
* Form: Google+ ID (must be the first column in the form)
* or you need to change `id = e.values[1];` line
* in getDisplayName function to the correct column number
*
* Author: Balazs Nadasdi
* <[email protected]>
* https://plus.google.com/u/0/104695723888883478740/about
*/
var API_KEY = "API_KEY";
var API_PRE = "https://www.googleapis.com/plus/v1/";
// API Tools
function generateAPIUrl(path, parameters) {
if (typeof path == "undefined") { return false; }
if (typeof path != "object" || !(path instanceof Array)) { path = [ path ]; }
if (typeof parameters == "undefined") { parameters = {}; }
parameters.key = API_KEY;
var query,
parameters_array = [];
for(var key in parameters) {
parameters_array.push("" + key + "=" + parameters[key]);
}
query = API_PRE + path.join("/") + "?" + parameters_array.join("&");
return query;
}
// Spreadsheet Tools
function getColIndexByName(colName) {
var sheet = SpreadsheetApp.getActiveSheet();
var numColumns = sheet.getLastColumn();
var row = sheet.getRange(1, 1, 1, numColumns).getValues();
for (i in row[0]) {
var name = row[0][i];
if (name == colName) {
return parseInt(i) + 1;
}
}
return -1;
}
// Event Handlers
function getDisplayName(e) {
var id, response, user, sheet, lastRow;
id = e.values[1];
try {
response = UrlFetchApp.fetch(
generateAPIUrl(
[ "people", id ],
{ "fields": "displayName" }
)
);
user = JSON.parse(response.getContentText());
} catch(err) {
return false;
}
if (!user.hasOwnProperty('displayName')) {
return false;
}
sheet = SpreadsheetApp.getActiveSheet();
lastRow = sheet.getLastRow();
return sheet.getRange(lastRow, getColIndexByName("DisplayName")).setValue(user.displayName);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment