使用 Shopify API 和 Google Sheet FetchUrl 应用程序
Use Shopify API with Google Sheet FetchUrl App
抱歉,我有点天真 - 边学边学。
我正在尝试使用他们的 API 将数据 post 发送到我的 shopify 商店。
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 来获取信息。但到目前为止,我使用的 URLS 没有这些有效负载数据。
我现在正在尝试将该有效载荷添加到我的脚本中 - 见下文,但它不起作用:
这是脚本:
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)表示:
The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request."
抱歉 - 这可能是一些非常简单的语法错误 - 但我只是在学习。
您的代码有 2 个小问题。
- HTTP 方法
- 内容类型
根据 Shopify Documentation for Inventory API,设置库存水平是一个 POST 请求。
除此之外,Shopify 期望 ContentType 为 application/json 而在您的情况下跳过它使用默认值 application/x-www-form-urlencoded 根据 Google Apps Script Docs。改变这个,你的代码看起来像
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);
}
抱歉,我有点天真 - 边学边学。 我正在尝试使用他们的 API 将数据 post 发送到我的 shopify 商店。 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 来获取信息。但到目前为止,我使用的 URLS 没有这些有效负载数据。 我现在正在尝试将该有效载荷添加到我的脚本中 - 见下文,但它不起作用:
这是脚本:
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)表示:
The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request."
抱歉 - 这可能是一些非常简单的语法错误 - 但我只是在学习。
您的代码有 2 个小问题。
- HTTP 方法
- 内容类型
根据 Shopify Documentation for Inventory API,设置库存水平是一个 POST 请求。
除此之外,Shopify 期望 ContentType 为 application/json 而在您的情况下跳过它使用默认值 application/x-www-form-urlencoded 根据 Google Apps Script Docs。改变这个,你的代码看起来像
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);
}