Используйте Shopify API с приложением Google Sheet FetchUrl - PullRequest
0 голосов
/ 24 апреля 2020

Извините, я немного наивен - учусь, как я go. Я пытаюсь разместить данные в моем магазине shopify, используя их API. https://shopify.dev/docs/admin-api/rest/reference/inventory/inventorylevel Синтаксис (согласно веб-сайту Shopify): POST /admin/api/2020-04/inventory_levels/set.json {"location_id": xxxxxxx, "inventory_item_id": xxxxxxx, " available ": xx}

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

Это сценарий:

function myfunction() {  
var url = "https://<myshopname>.myshopify.com/admin/api/2020-04/inventory_levels/set.json";
var payloaddata = {
  "location_id": <mylocationid>,
  "inventory_item_id": <inventoryitemid>,
  "available": <quantity to update>
  };
var payload = JSON.stringify(payloaddata);
var username = "<key>";
var password = "<password>";

  var response = UrlFetchApp.fetch(url, {"method":"PUT","headers": {"Authorization": "Basic " + Utilities.base64Encode(username + ":" + password)},payload:payload});

Logger.log(response.getContentText());
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data);
}

Код ответа 406, что (согласно Shopify) означает:

Запрашиваемый ресурс способен генерировать контент, неприемлемый только в соответствии с заголовками Accept, отправленными в запросе. "

Извините - возможно, это действительно простая синтаксическая ошибка - но я только учусь.

1 Ответ

0 голосов
/ 24 апреля 2020

Есть 2 незначительных проблемы с вашим кодом.

  • Метод HTTP
  • Тип содержимого

Согласно Shopify Документация для API инвентаризации , Set Inventory level - это запрос POST.

Кроме того, Shopify ожидает, что ContentType будет application / json, а при пропуске используется значение по умолчанию в вашем дело приложение / x- www-form-urlencoded согласно Документам скрипта Служб Google . Изменяя это, ваш код будет выглядеть так:

function myfunction() {
    var url = "https://<myshopname>.myshopify.com/admin/api/2020-04/inventory_levels/set.json";
    var payloaddata = {
        "location_id": <mylocationid>,
        "inventory_item_id": <inventoryitemid>,
        "available": <quantity to update>
      };

    var payload = JSON.stringify(payloaddata);
    var username = "<key>";
    var password = "<password>";

    var response = UrlFetchApp.fetch(url, {
        method: "POST",
        payload: payload,
        contentType: "application/json",
        headers: { "Authorization": "Basic " + Utilities.base64Encode(username + ":" + password) }
    });

    Logger.log(response.getContentText());
    var json = response.getContentText();
    var data = JSON.parse(json);
    Logger.log(data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...