Не получается отправить более двух значений в одном get запросе

Добрый день, подскажите пожалуйста в чем может быть проблема. Отправляю данные в гугл таблицу по get-запросу. Нужно отправить 5 значений в одном запросе. Два значения отправляются хорошо, но стоит добавить 3 значение, в таблицу вообще ничего не приходит. В чем может быть проблема?
Код esp:

#include <HTTPClient.h>
#include <WiFi.h>
const char* ssid = “";
const char password = "***”;
const char* googleScriptURL = “https://script.google.com/macros/s/AKfycbzSoSHauCv_dd1majUdUdprSUx7Bi927jNuUhPWAFDi4Txcl4dUm-5nEisk8tdWZsU5/exec?”;
String s;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(“Connecting to WiFi…”);
}
Serial.println(“Connected to WiFi”);
}
void loop(){
String s;
HTTPClient http;
s+=googleScriptURL;
s+=“a=”;
s+=time_work_1;
s+=“&b=”;
s+=time_work_2;
s+=“&c=”;
s+=time_work_3;
s+=“&d=”;
s+=time_work_4;
s+=“&w=”;
s+=time_work_5;
Serial.println(s);
http.begin(s);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.println(“Data sent to Google Sheets successfully”);
} else {
Serial.println(“Error sending data to Google Sheets”);
}
http.end();

}

}

time_work_n- это переменные которые хочу отправлять, инициализация и часть кода где их получаю я удалил, оставил только отправку.

Не эксперт в WEB. С удовольствием почитал бы ответы более опытных в этом деле форумчан.

Но Вы не пробовали вывести в Serial итоговый запрос и “проанализировать” его?
Останется ли запрос корректным, если одна из переменных time_work_n будет пустой строкой (они же строки?)

В 30 строке Вы и выводите итоговый запрос. Пропустил. Нет там чего-то подозрительного. Если выполнить его через браузер, он выполняется корректно?

Да, с Serial приходит корректный запрос. Сейчас обратился за помощью к ChatGPT вот он написал, что это ограничения GET- запроса, что он не дает более двух переменных сразу отправить. И видимо для моих задач нужно будет пробовать с post-запросами по пользоваться.

Откуда он знает?

Может и не знает, но пока выглядит логично. Так как я попробовал отправить данные просто через браузер и они тоже не отправились. То есть одна переменная отправляется, две тоже, третью добавляю и все запрос не отправляется

HTTP-протокол может использовать неограниченное количество таких запросов, но в этом нет никакой необходимости. Напротив, при использовании большого количества параметров могут возникнуть проблемы с рейтингом сайта в поисковых системах. Связано это с тем, что лимиты все-таки присутствуют, но со стороны сервера и браузера. Если длина будет превышена, то запрос попросту урежется.
Однако никто не сможет назвать идеальное количество параметров. Для разных серверов это число может колебаться – для одного 32 Кб, для другого – 1024 Кб. Золотая середина – 512 Кб. Рекомендуется использовать не более 5 параметров, иначе их будет сложно контролировать со стороны сервера и браузера. Если необходимо отправить большое количество данных, то лучше использовать POST-запросы.

Из интернета. За достоверность не отвечаю.

два десятка переменных точно через GET работало

Скорее ограничение гуглотаблиц. Кому вообще взбрело в голову для этого get использовать?

слона то я и не заметил, о таблицах ничего не знаю

Чего гадать то? Выведи в сериал ответ и покажи сюды.

ЗЫ: С гугл таблицами не работал, но ответ должен говорить однозначно что не нравится. Они же не идиоты.

Хм, я могу ошибаться но первый ответ в гугле говорит, что таблица просит номер строки и столбца в качестве параметров. Но это не точно.

Думаю документацию нужно читать вдумчиво.

Это явно какой-то нестандартный “облегчённо-сокращённый” способ передачи данных в таблицу. Не из основного API. Хотелось бы видеть его официальное описание.
Я вот первое что подумал, глядя на него, ну и как гугл должен из этих данных понять в какую книгу, на какой лист, в какие ячейки эти числа нужно вставить? Чудно!

1 лайк
https://script.google.com/macros/s/AKfycbzSoSHauCv_dd1majUdUdprSUx7Bi927jNuUhPWAFDi4Txcl4dUm-5nEisk8tdWZsU5/exec?

Отсюда, может быть?

Если я правильно понимаю, то это выполнение какого-то макроса (Google Script). Так может это макрос так написан, что только два параметра разбирает?

Я не большой скрипт написал для приема данных в Google Таблицы

 function doGet(e){
  var a = e.parameter.a;
  var b = e.parameter.b;
  var g = e.parameter.g;
  var d = e.parameter.d;
  var w = e.parameter.w;
  var dataTime = new Date();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1"); // замените "Sheet1" на имя вашего листа
  sheet.appendRow([dataTime, a, b, c, d, w]); 
return ContentService.createTextOutput("Данные успешно записаны в таблицу.");

В Serial выводи строку нормально с переменными, проблема в том, что я туже строку через браузер отправляю и все ровно данные не приходят. Приходят все 5 значений только в случае отправки единиц, если значения отличны от единиц, то пусто( А вот если всего две переменные то любые значения получает и отправляет в таблицу( Может тогда посоветуете как по другому можно отправлять 5 измеренных значений? Они должны сохраняться в таблицу и потом выводится среднее за текущий день) Пробовал через MQTT, но забуксовал на брокере, поэтом решил попробовать такой способ.