function setAuth(){
        var step = this;
        if ( options.google_account && options.google_password ){
          gsheet.setAuth( options.google_account, options.google_password, this );
        } else if (options.prompt_auth) {
          prompt.start();
          prompt.get({
            properties: {
              account: {
                description: 'Enter your google account name (username)',
                required: true
              },
              password: {
                description: 'Enter your google account password (hidden)',
                required: true,
                hidden: true
              }
            }
          }, function(err, result) {
            if (err) {
              grunt.log.error(err);
              return done(false);
            }

            gsheet.setAuth(result.account, result.password, step);
          });
        } else {
          this();
        }
      },
Ejemplo n.º 2
0
var addSubmissionToGoogleDocs = function (submission, res) {
  var sheet = new GoogleSpreadsheet(auth.form_key);

  sheet.setAuth (auth.username, auth.password , function(err) {
    sheet.getInfo (function(err, sheet_info ) {
      sheet_info.worksheets[0].getRows (function( err, rows ) {
        var GUEST_LIMIT = rows[0].guestlimit;
        var submissionList = rows.length > GUEST_LIMIT ? RESERVE : ORDINARY;

        sheet.addRow( submissionList, 
                      { namn: submission.name, 
                        personnummer: submission.personnummer,
                        email: submission.recipient, 
                        telefonnummer: submission.phone,
                        alkohol: submission.alcohol,
                        vegetarian: submission.vegetarian,
                        vegan: submission.vegan,
                        laktos: submission.laktos,
                        gluten: submission.gluten,
                        skaldjur: submission.skaldjur,
                        matpreferenser: submission.misc
                      });

        if (submissionList === RESERVE) {
          notifyReserveSubmission (submission, sheet_info);
          return res.render("reserve", { title: "Anmäld som reserv!" });
        }

        mailer.sendConfirmation (submission);
        return res.render("success", { title: "Anmäld!" });
      });
    });
  });
};
 function setAuth(){
   if ( options.google_account && options.google_password ){
     gsheet.setAuth( options.google_account, options.google_password, this );
   } else {
     this();
   }
 },
          }, function(err, result) {
            if (err) {
              grunt.log.error(err);
              return done(false);
            }

            gsheet.setAuth(result.account, result.password, step);
          });
Ejemplo n.º 5
0
function logTweetToGoogle(tweet, response) {
  gsheet.setAuth(config.GOOGLE_EMAIL, config.GOOGLE_PASSWORD, function(err){
    if (handleError(err)) return;

    gsheet.addRow(1, {
      text: tweet.text, url: "https://twitter.com/" + tweet.user.screen_name + '/status/' + tweet.id_str,
      polarity: response.polarity,
      confidence: Math.round(response.polarity_confidence*100)/100
    }, handleError);
  });
}
Ejemplo n.º 6
0
exports.getUsers = function (callback) {
  var names = [];
  my_sheet.setAuth(config.gsheet.email,config.gsheet.password, function(err){
    my_sheet.getRows( 1, function(err, row_data){
      for (var i = 0; i< row_data.length; i++) {
        var name = row_data[i].whatisyouropenstreetmapusername;
        if (name) {
          names.push(name);
        }
      }
      callback(names);
    });
  });
}
Ejemplo n.º 7
0
		writeRows : function(id,rows)
		{
			var my_sheet = new googleSpreadsheet(id);
			my_sheet.setAuth(config.googleUsername,config.googlePassword, function(err){
				for (var i=0;i<rows.length;i++)
					{
						if(rows[i].quote)
							{
							console.log(quoteIndex+" push to sheet : "+rows[i].quote);
							quoteIndex++;
							my_sheet.addRow(1,rows[i]);
							}
					}
			    });
		},
exports.post = function get(req, res) {
    /*var fields = {
        "wpcforganisationlegalrepresentativesurname": "",
        "wpcforganisationlegalrepresentativename": "",
        "surname": "",
        "email": "",
        "lang": ""
    };*/
    // console.log(res);
    // without auth -- read only
    // # is worksheet id - IDs start at 1
    // console.log( req.body);
    if (req.body.spreadsheet_key && req.body.email && req.body.password) {
        var my_sheet = new GoogleSpreadsheet(req.body.spreadsheet_key);
        if (req.body.mytext) {
            my_sheet.setAuth(req.body.email,req.body.password, function(err){
                my_sheet.getInfo( function( err, sheet_info ){
                    console.log( sheet_info.title + ' is loaded' );
                    // you can pass a context to the shortcode,
                    // which will be avaiable to each shortcode.
                    // let's define our first shortcode , that yields a video tag

                    // use worksheet object if you want to forget about ids
                    sheet_info.worksheets[0].getRows( function( err, rows ){
                        var shortCodesList = Object.keys( rows[0] );
                        var results = [];
                        for (var a = 0; a < rows.length; a++) {
                            context = { name:'foo'};
                            var string = req.body.mytext;
                            var myShortCodes =  shortcode2.create(context);
                            for (var b = 0; b < shortCodesList.length; b++) {
                                //console.log("AA "+shortCodesList[b]);
                                myShortCodes.add(shortCodesList[b], function (attributes, content, context) {
                                    return rows[a][shortCodesList[b]];
                                });
                                string = myShortCodes.parse(string);
                            }
                            console.log(string);
                            results.push(string);
                        }
                        console.log(results);
                        var msg = {};
                        /*
                        if (!req.body.associate.display_name || req.body.associate.display_name == "Please select"){
                            if (!msg.e) msg.e = [];
                            msg.e.push({m:"Please associate display name to a spreadsheet column"})
                        }
                        if (!req.body.associate.name || req.body.associate.name == "Please select"){
                            if (!msg.e) msg.e = [];
                            msg.e.push({m:"Please associate name to a spreadsheet column"})
                        }
                        if (!req.body.associate.surname || req.body.associate.surname == "Please select"){
                            if (!msg.e) msg.e = [];
                            msg.e.push({m:"Please associate surname to a spreadsheet column"})
                        }
                        if (!req.body.associate.email || req.body.associate.email == "Please select"){
                            if (!msg.e) msg.e = [];
                            msg.e.push({m:"Please associate email to a spreadsheet column"})
                        }
                        */
                        if (msg.e) {
                            res.render('docbuilder', {msg:msg,title:"Google Spreadsheet Tools",post:req.body,fields:Object.keys( rows[0] ),results:[]});
                        } else {
                            res.render('docbuilder', {title:"Google Spreadsheet Tools", post: req.body,fields:Object.keys( rows[0] ), results: results });
                            //rows[0].colname = 'new val';
                            //rows[0].save();
                            //rows[0].del();
                        }
                    });
                });
            });
        } else {
            my_sheet.setAuth(req.body.email,req.body.password, function(err){
                my_sheet.getInfo( function( err, sheet_info ){
                    console.log( sheet_info.title + ' is loadedaaaaa' );
                    // use worksheet object if you want to forget about ids
                    sheet_info.worksheets[0].getRows( function( err, rows ){
                        console.log( Object.keys(fields));
                        console.log( Object.keys( rows[0] ));
                        res.render('docbuilder', {title:"Google Spreadsheet Tools",post:req.body,fields:Object.keys( rows[0] ),results:[]});
                        //rows[0].colname = 'new val';
                        //rows[0].save();
                        //rows[0].del();
                    });
                });
            });
        }
    } else {
        res.render('docbuilder', {title:"Google Spreadsheet Tools",post:req.body,results:[],failed:[[],[]], success:[[],[]] });
    }
    /*
     my_sheet.getRows( 1, function(err, row_data){
     console.log( err)
     console.log( row_data)
     console.log( 'pulled in '+row_data + ' rows ')
     })
     // column names are set by google based on the first row of your sheet
     my_sheet.addRow( 2, { colname: 'col value'} );

     my_sheet.getRows( 2, {
     start: 0,            // start index
     num: 100            // number of rows to pull
     }, function(err, row_data){
     // do something...
     });
     */
};
Ejemplo n.º 9
0
exports.insertName = function(name) {
  my_sheet.setAuth(config.gsheet.email,config.gsheet.password, function(err){
    my_sheet.addRow(name, { colname: 'whatisyouropenstreetmapusername' });
  });
}
var spreadsheet = new GoogleSpreadsheet(spreadsheetId);

if (program.token) {

    var tokentype = program.tokentype || 'Bearer';
    spreadsheet.setAuthToken({
        value: program.token,
        type: tokentype
    });
    run();

} else if (program.user && program.password) {

    spreadsheet.setAuth(program.user, program.password, function(err) {
        if (err)
            throw err;
        run();
    });

} else {

    run();

}

function run() {

    spreadsheet.getInfo(function(err, sheet_info) {
        if (err)
            throw err;
Ejemplo n.º 11
0
app.post('/country/update/', function(req, res) {

  if (!req.session.loggedin) {
    res.render('country/reviewers/index.html', {countries: model.data.countrysubmissions.places, country: req.param('country'), error: "Only reviewers can access that page"});
    return;
  }

  if ((req.body['submit']) === "Publish") {
    console.log("Updating an entry");
    /* 
     * This uses the Google-Spreadsheets module
     * 
     * We first copy the current data to the archive,
     * then modify the current data,
     * then delete the submission.
     * 
     */

    //The simple dataset names are not used in the spreadsheet: use this to get the complicated name
    var fulldatasetname = model.datasetNamesMap[req.body['dataset']];

    //Key for the spreadsheet (see country.js)
    var gKey = model.gKey;

    //Feedback
    var returnError = {value: 0, message: ""};

    var my_sheet = new GoogleSpreadsheet(gKey);
    //We need authentication to perform edits (double-check) 
    my_sheet.setAuth(model.gUser, model.gPass, function(err) {
      if (err) {
        returnError = {value: 1, message: "Could not authenticate: " + err + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
        doneUpdating(returnError, req, res);
      }
      else {
        //Start by getting current entry. Module was modified to accept a query so that we don't have to download the whole sheet :)
        var query = {};
        query["sq"] = 'dataset="' + fulldatasetname + '" and place="' + req.body['country'] + '"';

        var norecord = false;
        
        //Get the (unique) row
        my_sheet.getRows(3, {}, query, function(err, rows) {
          if (err) {
            returnError = {value: 1, message: "While getting the current entry from the live sheet: " + err + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
            doneUpdating(returnError, req, res);
          }

          else if (rows.length > 1) {
            returnError = {value: 1, message: "There is more than one entry for " + req.body['dataset'] + "/" + req.body['country'] + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
            doneUpdating(returnError, req, res);
          }
          else {
            if (rows.length === 0) norecord = true;
            //Copy the data to the archive
            //No: discard old data, we will keep the submissions instead
            //my_sheet.addRow(5, {timestamp: rows[0].timestamp, place: rows[0].place, dataset: rows[0].dataset, exists: rows[0].exists, digital: rows[0].digital, machinereadable: rows[0].machinereadable, bulk: rows[0].bulk, public: rows[0].public, openlicense: rows[0].openlicense, uptodate: rows[0].uptodate, url: rows[0].url, dateavailable: rows[0].dateavailable, details: rows[0].details, submitter: rows[0].submitter, submitterurl: rows[0].submitterurl, email: rows[0].email, reviewed: rows[0].reviewed, archived: timeStamp()});

            var object = {};
            if (!norecord) object = rows[0];
            //Modify the row with the new data
            object.timestamp = req.body['timestamp'];
            object.year = req.body['year'];
            //rows[0].place = //Don't change!
            //rows[0].dataset = //Don't change!
            object.exists = req.body['exists'];
            object.digital = req.body['digital'];
            object.online = req.body['online'];
            object.free = req.body['free'];
            object.machinereadable = req.body['machinereadable'];
            object.bulk = req.body['bulk'];
            object.public = req.body['public'];
            object.openlicense = req.body['openlicense'];
            object.uptodate = req.body['uptodate'];
            object.url = req.body['url'];
            object.dateavailable = req.body['dateavailable'];
            object.format = req.body['format'];
            object.details = req.body['details'];
            
            //TODO: Change once new fields are there throughout the site
            object.year = "2013";
            object.online = "Unsure";
            object.free = "Unsure";
            object.format = "Unknown";
            //rows[0].submitter = req.body['submitter'];
            //rows[0].submitterurl = req.body['submitterurl'];
            //rows[0].email = req.body['email'];
            //rows[0].reviewed = 'Via web interface on ' + timeStamp();

            var afterwards = function(err) {
              if (err) {
                returnError = {value: 1, message: "While modifying/adding the current entry in the live sheet: " + err + "<br />The current entry (if any) is still there. You should <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
                doneUpdating(returnError, req, res);
              }
              else {

                //Get the row in the submitted sheet
                var query = {};
                query["sq"] = 'dataset="' + fulldatasetname + '" and place="' + req.body['country'] + '"';

                //Get the (unique) row
                my_sheet.getRows(1, {}, query, function(err, srows) {

                  if (err) {
                    returnError = {value: 1, message: "While getting the submission to remove from the submissions sheet: " + err + "<br />The new entry has been added and the submission marked as reviewed but not removed from the submissions sheet. Please <a href='../sheets/'>remove it manually.</a> This error has been reported."};
                    doneUpdating(returnError, req, res);
                  }
                  else if (srows.length === 0) {
                    returnError = {value: 1, message: "There is no submission for " + req.body['dataset'] + "/" + req.body['country'] + "<br />. Your edits have been saved but the submission cannot be altered. Please <a href='../sheets/'>resolve this manually</a>. This error has been reported."};
                    doneUpdating(returnError, req, res);
                  }
                  else if (srows.length > 1) {
                    returnError = {value: 1, message: "There is more than one submission for " + req.body['dataset'] + "/" + req.body['country'] + ". Your edits have been saved but the submission cannot be altered. Please <a href='../sheets/'>resolve this manually</a>. This error has been reported."};
                    doneUpdating(returnError, req, res);
                  }
                  else {
                    srows[0].reviewoutcome = 'accepted';
                    srows[0].reviewer = 'Via web interface on ' + timeStamp();
                    //Copy it to the other sheet with the new 
                    my_sheet.addRow(2, srows[0], function(err) {

                       if (err) {
                        returnError = {value: 1, message: "While moving the submission from the submissions sheet to the reviewed submissions sheet: " + err + "<br />The new entry has been added but the submission not marked as reviewed and not removed from the submissions sheet. Please <a href='../sheets/'>move it manually.</a> This error has been reported."};
                        doneUpdating(returnError, req, res);
                      }
                      else { 
                        srows[0].del(); //Attempt to delete, not handling errors yet.
                        returnError = {value: 0, message: "Entry updated successfully. The old entry has been archived and the submission marked as reviewed. Thank you!"};
                        doneUpdating(returnError, req, res);
                     }
                    });
                  }
                });
              }
            };
            
            if (!norecord) object.save(afterwards);
            else my_sheet.addRow(3, object, afterwards);
            
          }
        });
      }
    });

  }

  else if (req.body['submit'] === "Reject") {
    console.log("Rejecting an entry");
    /* 
     * This uses the Google-Spreadsheets module
     * 
     * We first copy the submitted data to the archive,
     * with a mark that it was rejected,
     * then delete the submission.
     * 
     */

    //The simple dataset names are not used in the spreadsheet: use this to get the complicated name
    var fulldatasetname = model.datasetNamesMap[req.body['dataset']];

    //Key for the spreadsheet (see country.js)
    var gKey = model.gKey;

    //Feedback
    var returnError = {value: 0, message: ""};

    var my_sheet = new GoogleSpreadsheet(gKey);
    //We need authentication to perform edits(?) 
    //TODO: Create Google account with no user data (sheet is open, but you need to be logged in to add(?)) 

    my_sheet.setAuth(model.gUser, model.gPass, function(err) {
      if (err) {
        returnError = {value: 1, message: "Could not authenticate: " + err + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
        doneUpdating(returnError, req, res);
      }
      else {
        //Start by getting current entry. Module was modified to accept a query so that we don't have to download the whole sheet :)
        var query = {};
        query["sq"] = 'dataset="' + fulldatasetname + '" and place="' + req.body['country'] + '"';

        //Get the (unique) row
        //Use gid 1 (submissions)
        my_sheet.getRows(1, {}, query, function(err, rows) {
          if (err) {
            returnError = {value: 1, message: "While getting the current entry from the submissions sheet: " + err + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
            doneUpdating(returnError, req, res);
          }
          else if (rows.length === 0) {
            returnError = {value: 1, message: "There is no entry for " + req.body['dataset'] + "/" + req.body['country'] + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
            doneUpdating(returnError, req, res);
          }
          else if (rows.length > 1) {
            returnError = {value: 1, message: "There is more than one entry for " + req.body['dataset'] + "/" + req.body['country'] + "<br />No changes have taken place. You may want to <a href='../sheets/'>resolve the problem manually.</a> This error has been reported."};
            doneUpdating(returnError, req, res);
          }
          else {
            //Copy the data to the archive, marking as rejected
            //The column names in the submissions sheet are horrible due to the form, which we will get rid of soon
            //FOR FUTURE: // my_sheet.addRow(5, {timestamp: rows[0].timestamp, place: rows[0].place, dataset: rows[0].dataset, exists: rows[0].exists, digital: rows[0].digital, machinereadable: rows[0].machinereadable, bulk: rows[0].bulk, public: rows[0].public, openlicense: rows[0].openlicense, uptodate: rows[0].uptodate, url: rows[0].url, dateavailable: rows[0].dateavailable, details: rows[0].details, submitter: rows[0].submitter, submitterurl: rows[0].submitterurl, email: rows[0].email, reviewed: "Rejected via Web Interface", archived: timeStamp()});
            //console.log(rows[0]);
            //my_sheet.addRow(5, {timestamp: rows[0].timestamp, place: rows[0].censuscountry, dataset: rows[0].dataset, exists: rows[0].dataavailabilitydoesthedataexist, digital: rows[0].dataavailabilityisitindigitalform, machinereadable: rows[0]['dataavailabilityisitmachinereadablee.g.spreadsheetnotpdf'], bulk: rows[0].dataavailabilityavailableinbulkcanyougetthewholedataseteasily, public: rows[0].dataavailabilityisitpubliclyavailablefreeofcharge, openlicense: rows[0]['dataavailabilityisitopenlylicensedasperthehttpopendefinition.org'], uptodate: rows[0].dataavailabilityisituptodate, url: rows[0].locationofdataonline, dateavailable: rows[0].dateitbecameavailable, details: rows[0].detailsandcomments, submitter: rows[0].yourname, submitterurl: rows[0].linkforyou, email: rows[0].youremailaddress, reviewed: "Rejected via Web Interface", archived: timeStamp()});
            //No, just mark it as rejected
            rows[0].review_outcome = 'rejected';
            rows[0].reviewer = 'Via web interface on ' + timeStamp();
            
            my_sheet.addRow(2, rows[0], function(err) {

              if (err) {
                returnError = {value: 1, message: "While marking the submission in the submissions sheet as rejected: " + err + "<br />The rejected entry has not been rejected. Please <a href='../sheets/'>reject it manually.</a> This error has been reported."};
                doneUpdating(returnError, req, res);
              }
              else {
                rows[0].del(); //Attempt to delete, not handling errors yet.
                returnError = {value: 0, message: "Entry rejected successfully. The entry has been archived and marked as rejected. Thank you!"};
                doneUpdating(returnError, req, res);
              }
            });


          }
        });
      }
    });
  }

});
Ejemplo n.º 12
0


var allTrackSlotsPage = 7;
var trackSlotPage = 6;
var engPage = 5;
var growthPage = 4;
var salesPage = 3;
var pdPage = 2;
var allTrackPage = 1;

//the google sheet we're using
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var my_sheet = new GoogleSpreadsheet(process.env.GOOGLE_SHEET_ID);

my_sheet.setAuth(process.env.EMAIL, process.env.GOOGLE_PASSWORD, function() {});	

/* GET pages. */
router.get('/mentors/eng', ensureAuthenticated, function(req, res, next) {
		// spreadsheet key is the long id in the sheets URL 
		my_sheet.getRows(trackSlotPage, function(err, allSlots) {
			getAllSlots(err, allSlots, engPage, res, "eng");

		});
});

router.get('/mentors/pd', ensureAuthenticated, function(req, res, next) {
		// spreadsheet key is the long id in the sheets URL 
		my_sheet.getRows(trackSlotPage, function(err, allSlots) {
			getAllSlots(err, allSlots, pdPage, res, "pd");
Ejemplo n.º 13
0
 demand.get(detailsUrl, function(err,response,body){
     if(err){console.log(err)}
     var downSilo = [];
     var detailsParse = JSON.parse(body);
     //console.log(detailsParse);
     
     //*****IF ITS A SPREADSHEET, PARSE THE XML WITHIN THE METADATA TO GET FULL DETAILS
     
     if(detailsParse.mimeType == "application/vnd.google-apps.spreadsheet"){
         //var my_sheet = new GoogleSpreadsheet(detailsParse.id);
         var my_sheet = new GoogleSpreadsheet(detailsParse.id);
         //console.log(detailsParse.id);   
         my_sheet.setAuth('*****@*****.**','ImWithJessica', function(err){
             my_sheet.getRows( 1, function(err, row_data){
                 if(err){console.log(err)}
                 
                 var counter = 0;
                 var silo = [];
                 row_data.map(function(element){
                     counter++;
                     var parser = new xml2js.Parser();
                     parser.parseString(element._xml, function(err,result){
                         if(err){console.log(err)}
                         
                         //***SEND RESULTS TO HTML
                         silo.push(result);
                         
                         //***STORE THIS INFORMATION IN SESSION
                         //req.sessionStore.
                         
                         if(counter == row_data.length){
                             //console.log(silo);
                             res.send(silo);
                         }
                     })
                 })
                 var parser = new xml2js.Parser();
                 /*parser.parseString(row_data._xml, function(err,result){
                     if(err){console.log(err)}
                     
                     console.log(result);
                 })*/
             })  
     })
 }
     if(detailsParse.mimeType == "audio/mpeg"){
         //console.log(detailsParse);
         var file = fs.createWriteStream("./"+detailsParse.title);
         io.sockets.socket(socket.id).emit('downIds', {id:detailsParse.id,title:detailsParse.title});
         
         /*var getDown = "https://www.googleapis.com/drive/v2/files/"+detailsParse.id+"?access_token="+req._passport.session.user[0].token;
         demand.get(getDown, function(err,response,body){
             if(err){console.log(err)}
             
             var downParse = JSON.parse(body);
             console.log(downParse.webContentLink);
             var r = demand({uri:downParse.downloadUrl,headers:{authorization:'Bearer '+req._passport.session.user[0].token}}).pipe(file);
             r.on('error', function(error){console.log(error)});
             r.on('finish', function(){
                 file.close();
                 console.log("done downloading");
             })
             })*/
         }
         
     })