Hi there!
I’m using my Particle Electron with a sensor to publish a String (text only) message every time it detects movement. I would like to integrate my Particle with Google Cloud Platform, and I have been following this great in depth tutorial by @rickkas7, but it seems to be outdated as it uses Node.js 6 which has been “deprecated” on Google Cloud functions for over a year now I believe…
Now I say that because when I try to deploy a function (say, the Google Sheets function), it gives me the error below
When I looked this problem up, a bunch of people said to add a “context” parameter to the function, which I tried, but I’m not sure if that solved my problem.
For reference, this is the code from the guide:
//Google API to allow access to sheets
const {google} = require('googleapis');
const sheets = google.sheets({version: 'v4'});
const dateFormat = require('dateformat');
const credentials = require("./credentials.json");
const config = require("./config.json");
/**
* Background Cloud Function to be triggered by Pub/Sub.
* This function is exported by index.js, and executed when
* the trigger topic receives a message.
*
* @param {object} event The Cloud Functions event.
* @param {function} callback The callback function.
*/
exports.sheetsTest = (event, callback) => {
const pubsubMessage = event.data;
// console.log("event", event);
if (!pubsubMessage.data) {
console.log("no data");
callback();
return;
}
var jsonData = JSON.parse(Buffer.from(pubsubMessage.data, 'base64').toString());
// console.log("jsonData", jsonData);
var row = [];
// This generates the columns for the row to add to the spreadsheet
var d = Date.parse(pubsubMessage.attributes.published_at);
row.push(dateFormat(d, 'm/d/yyyy HH:MM:ss'));
const fields = ['a', 'b', 'c', 'n'];
fields.forEach(function(field) {
if (jsonData.hasOwnProperty(field)) {
row.push(jsonData[field]);
}
else {
row.push('');
}
});
// This is the JWT authorization for the spreadsheet
var jwt = new google.auth.JWT(
credentials.client_email, null, credentials.private_key,
['https://www.googleapis.com/auth/spreadsheets']);
sheets.spreadsheets.values.append({
spreadsheetId: config.spreadsheetId,
range: 'A1',
auth: jwt,
key: config.apiKey,
valueInputOption: 'USER_ENTERED',
resource: {values: [row]}
}, function(err, result) {
if (err) {
console.log("Error writing sheet", err);
}
else {
console.log('Updated sheet: ' + result.data.updates.updatedRange, row);
}
callback();
});
};
If anyone knows how I could fix this that would be greatly appreciated… Thank you!