Страницы: 1
RSS
Запрос WEB API через Power Qwery, Надо получить ответ по API в формате JSON
 
Добрый день. Поискал на форуме и ничего похожего не нашел, прошу помощи.

Есть потребность подключится к источнику данных, в документации запрос выглядит так:

GET / HTTP/1.1
Host: api-seller.ozon.ru
Client-Id: <Client-Id>
Api-Key: <Api-Key>
Content-Type: application/json

Но вот куда вводить Client-Id? совсем не понятно.

выдает следующее:


Где можно посмотреть примеры интеграции такой API с EXCEL?

Документация здесь - Документация Ozon Seller API

Изменено: Максим - 28.07.2021 15:52:57
 

Здравствуйте! Создайте пустой запрос в PQ и в расширенном редакторе вставьте код из примера ниже подставив нужные значение в поля Client-id и Apikey
изменяйте переменную url чтобы получить данные из других методов API Ozon

Код
url = "https://api-seller.ozon.ru/v1/product/info/prices",
    body  = "{ ""page"": ""1"",  ""page_size"": ""500""}", //постранично - не более 1000 записей на страницу
    Parsed_JSON = Json.Document(body),
    BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
    Source = Json.Document(Web.Contents(url,[Headers = [#"Content-Type"="application/json",#"Client-Id"="XXXX",#"Api-Key"="XXXXXXXXX"], Content = Text.ToBinary(body) ] )),
    result = Source[result],
    items = result[items],
 
Попробуйте удалить последнюю запятую
 
А ругается на запятую в первой строке, не подскажете, как исправить код выше, что бы заработало?
Изменено: Newsky13 - 27.10.2022 14:29:30
 
Цитата
Newsky13 написал:
ругается на запятую
в let in завернули код?
 
Никита К, пробовала ваш код, но PQ выдает ошибку. Сможете подсказать, в чем кроется проблема?
Изменено: Shameless - 28.11.2022 02:30:46
 
Цитата
написал:
Никита К, пробовала ваш код, но PQ выдает ошибку. Сможете подсказать, в чем кроется проблема?
Если я правильно понял, Вы не подставили API ключ из админки OZON
 
Никита К, для удобства создала переменные client_id и api_key (они подтягиваются автоматически с листа, чтобы в случае смены ключа не перебивать каждый код). Если в код прямо вставить ID и ключ, то такая же ошибка возникает. У вас код работает?
 
Техподдержка Ozon написала следующее:
Вам необходимо отправлять POST запрос. В данном примере вы отправляете GET.
Изменено: Shameless - 28.11.2022 12:00:57
 
Уважаемые, если у кого заработает, пожалуйста, поделитесь рабочим вариантом, очень актуальная тема
 
Всем привет! В PQ запрос передается как POST если заполнены данные в Content
Если Вы подставляете данные из переменных, обратите внимание на количество и закрывание кавычек. Я уже не работаю с озон но вот пример работающего кода из апи запроса к алиэкспресс:
Код
Content = Text.ToBinary("{""products"":[{""product_id"":""" & Id & """,""skus"":[{""sku_code"": """ & Sku_code & """,""inventory"": """ & Inventory & """}]}]}""") ] ))
 Обратите внимание, значение переменных с обоих сторон облачено в " х 3 или (""")

Я побежал апи озон  около полугода тк нигде ни видел нормальной инфы как это делается через PQ, и когда победил моему ликованию не было предела. Запаситесь терпением и метод тыка поможет Вам
 
Очень надеюсь, что содержание данного сообщения не нарушит никаких правил.
В продолжении темы данного топика (Ozon API + Excel) есть предложение к заинтересованным к данной теме. Как то наткнулся в поисках решения, на такую реализацию (Ozon API + Google таблицы) Обратился к автору, но он что то как то непонятно (мне) ответил, в итоге, обратился на один из сайтов фрилансеров. За (неприлично в итоге большие для данной задачи)  деньги мне написали скрипт с абсолютно идентичным функционалом из ссылкb выше. Забирает данные о заказах, о ценах и остатках, если нужно изменить или остатки или цены, то вносятся новые данные, лист определяет изменения и только их можно из этого же листа отправить на Озон. Так вот, суть сообщения. Готов даром поделиться этим скриптом для Гугл таблиц с целью адаптировать всё это для Excel. Я конечно не знаю, насколько родственны скрипты от Гугл таблиц с Excel и не выйдет ли это каша из топора, но если на осове скрипта, его можно без особых затруднений переделать для Excel и в итоге получить функционал как на ссылке выше, только в Excel, стучите в лс, с радостью поделюсь исхдниками (только для реализации под Excel).

Если данное сообщение противоречит правилам, прошу снести его и не применять санкций, ибо финансовой корысти не исытываю, просто очень хочется удобно работать с Озон по API именно через Excel.
 
Я подружил Power Query и Ozon!!!!!!
Делаете пустой запрос. В расширенном редакторе вставляете тест ниже. Client-Id"="ХХХХХХХХ" и "Api-Key"="ХХХХХХХХХХХ" меняете на свои.

let
   Запрос = let

url = "https://api-seller.ozon.ru/v3/finance/transaction/list&quot;,
   body  = "{""filter"": {
       ""date"": {
           ""from"": ""2023-01-01T00:00:00.000Z"",
           ""to"": ""2023-01-20T00:00:00.000Z""
       },
       ""operation_type"": [],
       ""posting_number"": """",
       ""transaction_type"": ""all""
   },
   ""page"": 1,
   ""page_size"": 1000
}",


   Parsed_JSON = Json.Document(body),
   BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
   Source = Json.Document(Web.Contents(url,[Headers = [#"Content-Type"="application/json",#"Client-Id"="ХХХХХХХХ",#"Api-Key"="ХХХХХХХХХХХ"], Content = Text.ToBinary(body) ] )),
   result = Source[result],
   items = result[items]

in
   Source,
   #"Преобразовано в таблицу" = Record.ToTable(Запрос),
   #"Развернутый элемент Value" = Table.ExpandRecordColumn(#"Преобразовано в таблицу", "Value", {"operations", "page_count", "row_count"}, {"Value.operations", "Value.page_count", "Value.row_count"}),
   #"Развернутый элемент Value.operations" = Table.ExpandListColumn(#"Развернутый элемент Value", "Value.operations"),
   #"Развернутый элемент Value.operations1" = Table.ExpandRecordColumn(#"Развернутый элемент Value.operations", "Value.operations", {"operation_id", "operation_type", "operation_date", "operation_type_name", "delivery_charge", "return_delivery_charge", "accruals_for_sale", "sale_commission", "amount", "type", "posting", "items", "services"}, {"Value.operations.operation_id", "Value.operations.operation_type", "Value.operations.operation_date", "Value.operations.operation_type_name", "Value.operations.delivery_charge", "Value.operations.return_delivery_charge", "Value.operations.accruals_for_sale", "Value.operations.sale_commission", "Value.operations.amount", "Value.operations.type", "Value.operations.posting", "Value.operations.items", "Value.operations.services"})
in
   #"Развернутый элемент Value.operations1"
 
Максим, А у меня, что то не хочет, ругается...
 
Newsky13, такая же фигня
 
Ну Вы же не просто копируете? :) Написать с 0, вероятно, сложно, но чуть-чуть понимать же код нужно.
Что если закрыть кавычки у текстового значения url? :)
Код
url = "https://api-seller.ozon.ru/v3/finance/transaction/list&quot;,",
Изменено: surkenny - 28.03.2023 10:28:06
 
Цитата
написал:
Ну Вы же не просто копируете?  Написать с 0, вероятно, сложно, но чуть-чуть понимать же код нужно.
Что если закрыть кавычки у текстового значения url?
Код
    [URL=#]?[/URL]       1      url =   " https://api-seller.ozon.ru/v3/finance/transaction/list" ,"  ,   
 
На базе вашего запроса, который у меня работает, сделал другой запрос но PQ упорно выдаёт 400 ошибку Bad request. Причем в Postman всё отлично пашет. Я уже голову сломал. Что не так? Памагити!


let
 Запрос = let

url = "https://api-seller.ozon.ru/v2/posting/fbo/list",
body  = "{
""dir"": ""ASC"",
""filter"": {
         ""since"": ""2023-05-01T00:00:00.000Z"",
         ""status"": """",
         ""to"": ""2024-07-05T10:44:12.828Z""
             },
""limit"": 1000,
""offset"": 0,
""translit"": ""true"",
 ""with"": {
         ""analytics_data"": ""true"",
         ""financial_data"": ""true""
          }
}",


Apikey = "xxxxx",
Clientid = "xxxxx",

  Parsed_JSON = Json.Document(body),
  BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
  Source = Json.Document(Web.Contents(url, [Headers = [#"Client-id"=Clientid, #"Api-key"=Apikey,#"Content-Type"="application/json"], Content = Text.ToBinary(body) ] )),
  result = Source[result],
  items = result[items]

in

Source,
 #"Converted to table" = Record.ToTable(Запрос),
 #"Expanded Value" = Table.ExpandListColumn(#"Converted to table", "Value"),
 #"Expanded Value 1" = Table.ExpandRecordColumn(#"Expanded Value", "Value", {"order_id", "order_number", "posting_number", "status", "cancel_reason_id", "created_at", "in_process_at", "products", "analytics_data", "financial_data", "additional_data"}, {"order_id", "order_number", "posting_number", "status", "cancel_reason_id", "created_at", "in_process_at", "products", "analytics_data", "financial_data", "additional_data"})
in
 #"Expanded Value 1"
 
Иван, удалось решить проблему?
 
Ошибка 400 обычно означает неверно переданные параметры. Вот в них и надо искать причину. Может быть тип данных, переданных через JSON не тот, что ожидался. Например, здесь:
Код
""analytics_data"": ""true"",
true или false вполне возможно должны быть без кавычек, т.к. это булево значение, а не текст:
Код
""analytics_data"": true,
Но это все надо смотреть по спецификации API.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Вы абсолютно правы! Это и была причина ) Спасибо
 
Цитата
написал:
Иван , удалось решить проблему?
Да, в итоге true false действительно в данном запросе нужно было писать без кавычек. Удивительно, что в других некоторых запросах с кавычками на true false работает.
 
(удалено)
Изменено: Partizano _pl - 12.07.2023 16:00:41
 
Дмитрий(The_Prist) Щербаков, а не подскажете еще как в исходном коде текстовые даты заменить на формулы:

значение ""to"": ""2024-07-05T10:44:12.828Z""  заменить на СЕГОДНЯ()

и

значение ""since"": ""2023-05-01T00:00:00.000Z"" заменить на СЕГОДНЯ() минус 6 месяцев назад

?
 
Иван, а как вы обошли лимит в 1000 строк? Ведь это не так много заказов высвечивается, в моем случае всего за 10 дней. По методу API больше 1000 строк из одного запроса нельзя получить. Предполагаю, что нужно как-то организовывать несколько запросов в диапазоне выбранных дат и складывать их результаты в одну таблицу. Если делали так, поделитесь опытом, пожалуйста, как это прописать в коде?
 
Кто-нибудь может подсказать дальше как загрузить отчеты.
К примеру я с помощью метода /v1/report/postings/create создал отчет, далее получил код этого отчета. Как его теперь загрузить?
Изменено: timi11 - 08.02.2024 20:24:43
 
Все таки получилось у кого-нибудь заменить даты на формулы?
Изменено: timi11 - 09.02.2024 00:09:10
Страницы: 1
Наверх