Skip to content

Instantly share code, notes, and snippets.

@fumingshih
Created December 1, 2013 21:04
Show Gist options
  • Save fumingshih/7740760 to your computer and use it in GitHub Desktop.
Save fumingshih/7740760 to your computer and use it in GitHub Desktop.
GAS code that use RowUtilities to read out the spreadsheet data and send it as json using post.
var db = ScriptDb.getMyDb();
// ===== This script will post the data to itself and we can have another gs file to trigger posting another copy of the data ===========
// The idea is to post a payload with id and data
// var payload = {'id': id,
// 'data': data
// }
// data will be computed from RowUtilities
function readSpreadsheetAsJson(){
//test running apps
var docId = "0AmcViZZV0aRjdFRuS2pqOHBzYkxHVURSSHZyWEx0b1E";
var ss = SpreadsheetApp.openById(docId);
var sheet = ss.getSheets()[0];
// get all the data except the header
Logger.log(sheet.getLastRow());
Logger.log(sheet.getLastColumn());
var dataRange = sheet.getRange(2, 1, 2, sheet.getLastColumn()-1);
var runningAppObjects = getRowsData(sheet, dataRange, 1);
Logger.log(JSON.stringify(runningAppObjects));
// var postData = JSON.stringify(pushObjects);
return runningAppObjects;
}
function checkDb(){
var size = db.query({}).getSize();
var result = db.query({});
while (result.hasNext()) {
var current = result.next();
Logger.log(JSON.stringify(current));
// Do something with "current".
}
Logger.log(size);
}
function doGet() {
var ui = UiApp.createApplication();
var button = ui.createButton('hi');
ui.add(button);
return ui;
}
function pushData(){
var appData = readSpreadsheetAsJson();
var load = {'data' : appData};
Logger.log("load: " + JSON.stringify(load));
var urlFetchOptions = {'contentType' : 'application/json',
'method' : 'POST',
'payload' : JSON.stringify(load)};
Logger.log("urlFetchOptions: " + JSON.stringify(urlFetchOptions));
var url = ScriptApp.getService().getUrl();
var response = UrlFetchApp.fetch(url,urlFetchOptions).getContentText();
Logger.log("original_resp: " + response);
var stuff = JSON.parse(response);
var pushItems = stuff.data;
for(var i = 0; i < pushItems.length; i++){
var item = pushItems[i];
Logger.log(JSON.stringify(item));
}
}
function doPost(eventInfo){
var stuff = JSON.parse(JSON.stringify(eventInfo));
var contentsStr = stuff.postData.contents;
var contentObjs = JSON.parse(contentsStr);
var pushItems = contentObjs.data;
for(var i = 0; i < pushItems.length; i++){
var item = pushItems[i];
//Do something about the item
db.save(item);
}
// Logger.log("parsed: " + jsonObj);
// db.save(jsonObj);
// below is for quick testing.
return ContentService.createTextOutput(JSON.stringify(contentObjs));
}
function checkDb(){
var size = db.query({}).getSize();
var result = db.query({});
while (result.hasNext()) {
var current = result.next();
Logger.log(JSON.stringify(current));
// Do something with "current".
}
Logger.log(size);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment