Created
December 1, 2013 21:04
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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