function doPost(e) {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getSheets()[0];
var row = JSON.parse(e.postData.contents) || []; // Parse POST data
row.unshift(new Date()); // Add timestamp as a first field
var r = sheet.getRange(sheet.getLastRow() + 1, 1, 1, row.length);
r.setValues([row]);
return ContentService.createTextOutput('');
}
A firmware must send a POST request do the script URL.
A POST data must be a JSON array. Each element of the array will be inserted
into a spreadsheet in a separate column. For example, if a POST data
is [1234, "hello"]
, then in a spreadsheet a new row will be inserted with
3 columns: timestamp, 1234
, and "hello"
.
This is a minimal app that reports a single value (free RAM) to the spreadsheet:
#include "mgos.h"
const char *s_url = "https://script.google.com/macros/s/xxxxxxx/exec";
static void timer_cb(void *arg) {
char buf[100];
struct json_out out = JSON_OUT_BUF(buf, sizeof(buf));
json_printf(&out, "[%d]", mgos_get_free_heap_size());
mg_connect_http(mgos_get_mgr(), NULL, NULL, s_url, NULL, buf);
(void) arg;
}
enum mgos_app_init_result mgos_app_init(void) {
mgos_set_timer(3000, MGOS_TIMER_REPEAT, timer_cb, NULL);
return MGOS_APP_INIT_SUCCESS;
}
edit this doc