#google-apps-script #esp32
Вопрос:
Всем доброго дня
У меня есть некоторые знания в программировании, но не так много, как хотелось бы. У меня есть этот скрипт, который я использую для хранения данных датчиков в таблице Google, данные поступают с платы esp32, и на данный момент он получает некоторые базовые значения датчиков. Моя проблема в том, что мне нужен скрипт вместо того, чтобы каждый раз добавлять новую строку просто для замены данных в строке под заголовками, есть ли способ сделать это? Я добавлю свой сценарий
var timeZone = "UTC 2" ; //get yours at https://www.timeanddate.com/time/zones/
var dateTimeFormat = "dd/MM/yyyy HH:mm";
var enableSendingEmails = true;
var emailAddress = ""; // comma separate for several emails
// 'bob@example.com';
// 'bob@example.com,admin@example.com';
function doGet(e)
{
var result = 'Ok'; // default result
if (e.parameter == 'undefined')
{
result = 'No Parameters';
} else {
var alarm= e.parameter.alarm;
if (typeof alarm != 'undefined')
{
sendEmail("alarm text:" stripQuotes(alarm));
return ContentService.createTextOutput(result);
}
var sheet = getSpreadSheet();
var lastRow = sheet.getLastRow();
var newRow = 1;
if (lastRow > 0)
{
var lastVal = sheet.getRange(lastRow, 1).getValue();
//if there was no info for (sentEmailIfUnitIsOutForMinutes) checkIfDead() function will append row with 'dead' text
// so checking do we need to override it
if (lastVal == 'dead')
newRow = lastRow; //to overwrite "dead" value
else
newRow = lastRow 1;
}
var rowData = [];
var namesOfParams=[];
for (var param in parseQuery(e.queryString))
namesOfParams.push(param);
// namesOfParams=namesOfParams.reverse();
//creatating headers if first row
if (newRow == 1)
{
rowData[0] = "Date";
var i = 1;
for (var i=0; i<namesOfParams.length;i )
{
rowData[i 1] = namesOfParams[i];
}
var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
rowData = [];
newRow ;
}
rowData[0] = Utilities.formatDate(new Date(), timeZone, dateTimeFormat);
for (var i=0; i<namesOfParams.length;i )
{
var value = stripQuotes(e.parameter[namesOfParams[i]]);
rowData[i 1] = value;
}
var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
// Return result of operation
return ContentService.createTextOutput(result);
}
/**
* Remove leading and trailing single or double quotes
*/
function stripQuotes(value) {
return value.replace(/^["']|['"]$/g, "");
}
function parseQuery(queryString)
{
var query = {};
var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('amp;');
for (var i = 0; i < pairs.length; i )
{
var pair = pairs[i].split('=');
query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
}
return query;
}
function sendEmail(message)
{
if (!enableSendingEmails)
return;
var subject = 'Something wrong with your esp';
MailApp.sendEmail(emailAddress, subject, message);
}
function getSpreadSheet()
{
return SpreadsheetApp.getActiveSheet();
}
Комментарии:
1. В описании тега «скрипт» говорится: «НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ТЕГ! Каждый такой вопрос так или иначе связан со сценариями». Поэтому я заменил его соответствующим тегом: google-приложения-скрипт .