Переменная Google Sheets не работает, строка с жестким кодом не работает - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь вызвать http rest url с помощью пользовательской функции Google Sheets.

Это работает

function getProductDetailsbyEAN(EANCode) {
  EANCode = '8901719255137'
  if (EANCode == undefined) {
    Logger.log("EANCode undefined") ;
    return "undefined EANCode"
  }

  //EANCode = "'" + EANCode + "'"
  Logger.log(EANCode)  
  var formData = {
    'gtins': [EANCode],
  };
  Logger.log(formData.toString())

  var options = {
    'method' : 'post',
    'headers' : { 'Authorization':'Bearer mysecuritycode', 'content-type': 'application/json' },
    'payload' : JSON.stringify(formData)
  };
  var URL = "http://myurl"
  var response = UrlFetchApp.fetch(URL, options);
  response = response.toString() ;
  if (response.indexOf("returned code 404") != -1) {
    Logger.log("ResponseError");
    Logger.log(response) ;
    return "ResponseError" ;
  }
  var jsonResponse = JSON.parse(response) ;
  var jsonResponseItems = jsonResponse['items']
  var jsonResponseZerothItem = jsonResponseItems[0] ;
  Logger.log(jsonResponseZerothItem) ;
  return jsonResponseZerothItem ;
  SpreadsheetApp.flush();
}

Но если я пытаюсь заставить это работать через параметр, которого нет, возвращает 404

Это не работает

function getProductDetailsbyEAN(EANCode) {
  //EANCode = '8901719255137'
  if (EANCode == undefined) {
    Logger.log("EANCode undefined") ;
    return "undefined EANCode"
  }

  EANCode = "'" + EANCode + "'"
  Logger.log(EANCode)  
  var formData = {
    'gtins': [EANCode],
  };
  Logger.log(formData.toString())

  var options = {
    'method' : 'post',
    'headers' : { 'Authorization':'Bearer myscuritycode', 'content-type': 'application/json' },
    'payload' : JSON.stringify(formData)
  };
  var URL = "http://myurl"
  var response = UrlFetchApp.fetch(URL, options);
  response = response.toString() ;
  if (response.indexOf("returned code 404") != -1) {
    Logger.log("ResponseError");
    Logger.log(response) ;
    return "ResponseError" ;
  }
  var jsonResponse = JSON.parse(response) ;
  var jsonResponseItems = jsonResponse['items']
  var jsonResponseZerothItem = jsonResponseItems[0] ;
  Logger.log(jsonResponseZerothItem) ;
  return jsonResponseZerothItem ;
  SpreadsheetApp.flush();
}

Мне не хватает чего-то действительно основанного c на передаче параметров. Пожалуйста, совет.

1 Ответ

2 голосов
/ 05 марта 2020

Я думаю, что в вашем случае кажется, что EANCode требуется для использования в качестве строки. Так как насчет этой модификации?

Пожалуйста, измените приведенный ниже скрипт в вашем вопросе следующим образом.

От:

EANCode = "'" + EANCode + "'"

Кому:

EANCode = EANCode.toString();

Примечание:

  • 8901719255137 меньше 9007199254740991, что составляет Number.MAX_SAFE_INTEGER . Поэтому я подумал, что вы можете использовать EANCode.toString().
  • Из вашего вопроса я не могу подтвердить метод для вызова getProductDetailsbyEAN(EANCode). Так что, если вышеуказанная модификация не была прямым решением, можете ли вы предоставить скрипт для вызова getProductDetailsbyEAN(EANCode)?

Ссылка:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, прошу прощения.

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