Задать вопрос
AgeofCreations
@AgeofCreations
Python, AsyncIO, AMQP

Как сформировать запрос к API, если часть параметров статичны, а часть — динамичны?

Нужно сделать скриптик для гуглдока, который бы отсылал GET запрос к API Я.Метрики, в котором половина параметров - статичны, другая половина - динамичны и указываются в виде аргументов пользовательской функции.

Пробовал просто строковое выражение, в которое с помощью шаблонных литералов вставлял динамические параметры, но чёт не пошло. Хотя теоретически, запрос должен был сформироваться верно. В JS не шарю от слова совсем. Есть хороший способ?

Текущий нерабочий вариант:

function GetMetrika(date1,date2,url3) {
      var metrika_api_base_url = 'https://api-metrika.yandex.ru/stat/v1/data?oauth_token=<мой токен>&ids=<id моего счётчика>&date1=${date1}&date2=${date2}&dimensions=ym%3As%3AsearchEngine&metrics=ym%3As%3Ausers&filters=ym%3As%3AstartURLPath%3D%3D${url3}&limit=10000';
      metrika_api_base_url = metrika_api_base_url;
      Logger.log(metrika_api_base_url);
      var responseJson=UrlFetchApp.fetch(metrika_api_base_url).getContentText();
      var response = JSON.parse(responseJson);
      Logger.log (responseJson);
      return response;
    }


Возвращаемая ошибка - недействительный аргумент в строке:


var responseJson=UrlFetchApp.fetch(metrika_api_base_url).getContentText();
  • Вопрос задан
  • 275 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
andrew-r
@andrew-r
Фронтенд-разработчик
Хороший способ работы с URL-параметрами — это URLSearchParams, он автоматически кодирует недопустимые в URL символы и склеивает все параметры в одну строку:

var params = new URLSearchParams();
params.append('token', 'a b c');
params.append('limit', 100);

var baseApiUrl = 'https://api-metrika.yandex.ru/stat/v1/data';
console.log(baseApiUrl + '?' + params.toString());
// → https://api-metrika.yandex.ru/stat/v1/data?token=a+b+c&limit=100
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
Для шаблонных строк используются обратные кавычки:
const template = `Hello, ${username}!`;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы