Запуск функции ГАЗ через URL - PullRequest
0 голосов
/ 07 июня 2019

Очень новый для этого, но дать ему шанс. Я пытаюсь настроить датчик движения Arduino для запуска сценария. На данный момент моя цель - запустить скрипт через URL. Я нашел этот код ниже, через который я работаю, но я продолжаю получать эту ошибку при запуске / отладке.

TypeError: Невозможно прочитать свойство "параметр" из неопределенного. (строка 4, файл «Код»)

Я смотрел на объект e.parameter, но не смог продвинуться вперед

      function doGet(e) {
  Logger.log(e)
  var passedString,whatToReturn;

  passedString = e.parameter.searchStringName;
  if (passedString === 'tylog') {
    whatToReturn = tylog();  //Run function One
  };

 return ContentService.createTextOutput(whatToReturn);
};


var mns = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Monster")
var tyl = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tyLog")
var tyd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tyData")
var twl = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("twLog")
var twd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("twData")
var tym = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tyMaster")
var twm = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("twMaster")
var test = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test")
var tydate = tyd.getRange('A2');
var tydur = tyd.getRange(2, 2);

// Start functions
function start() {
  tyl.getRange('A1').setValue(new Date());
  twl.getRange('A1').setValue(new Date());
}

//Log Typhoon ride
function tylog() {
  tyl.getRange(tyl.getLastRow() + 1, 1).setValue(new Date());  
}

//Log Twister ride
function twlog() {
  twl.getRange(twl.getLastRow() + 1, 1).setValue(new Date());
}


//Send Data to both logs and clear

function tyclear() {
  tyd.getRange('A2:H2').copyTo(tym.getRange(tym.getLastRow() + 1, 1), {contentsOnly: true});
  twd.getRange('A2:H2').copyTo(twm.getRange(twm.getLastRow() + 1, 1), {contentsOnly: true});
  tyl.getRange('A1:A100').clearContent();
  twl.getRange('A1:A100').clearContent();

}

URL-запрос:

https://script.google.com/macros/s/AKfycbxC5zYevR1IhfFcUMjmIqUaQ1dKNHTm4mhmWBq_Rc9HgemJQ6Q/exec?searchStringName=tylog

Изображение отладки

Я поместил это в новый проект сам по себе, и он все еще вернулся неопределенным.

function doGet(e) {
  var passedString,whatToReturn;

  passedString = e.parameter.searchStringName;
  if (passedString === 'functionOne') {
    whatToReturn = functionOne();  //Run function One
  };

  return ContentService.createTextOutput(whatToReturn);
};

function functionOne() {
  var something;
return ContentService.createTextOutput("Hello, world!"); }

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Я считаю, что ваш URL должен быть https://script.google.com/macros/s/AKfycbxC5zYevR1IhfFcUMjmIqUaQ1dKNHTm4mhmWBq_Rc9HgemJQ6Q/exec?searchStringName=functionOne

После некоторого размышления над этим вопросом нет смысла требовать возврата из functionOne. Я перепутал взаимодействие клиент-сервер с процессом запроса Get. Для большинства запросов Get запрос предполагает какой-либо тип ответа, поскольку в целом мы ищем какой-либо тип контента для отображения. В этой ситуации это может не потребоваться, поскольку запрашивающая сторона является машиной.

Использование e.parameter.paramname; просто позволяет нам отправлять пары ключ / значение из нашей строки запроса, которые мы можем восстановить, чтобы перенаправить действия нашего сервера.

0 голосов
/ 07 июня 2019

Полагаю, вам следует удалить второй doGet() из вашего скрипта. В продолжение моего последнего комментария я попытался получить доступ к вашему URL-адресу, и мне стало любопытно, почему вместо Content произошло перенаправление. Если результат перенаправления echo? вернул undefined, у вас должны быть конфликтующие doGet() функции.

Upd: пожалуйста, не обращайте внимания на ответ - это определенно не проблема!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...