从 Google 个工作表单元格创建 JSON.stringify 个负载

Create JSON.stringify payload from Google Sheets Cells

我有一个脚本可以 post 可用库存调整到 Shopify 但我不知道如何扩展它并从 sheet 中的单元格获取有效负载并理想地循环有效负载所以我一次可以更新多个项目。

REF:https://shopify.dev/docs/admin-api/rest/reference/inventory/inventorylevel#adjust-2021-01

我想在 sheet 中包含“location_id”、“inventory_item_id”、“available_adjustment” 的单元格并循环这些单元格,这样我就可以在下面找到例如。

"location_id" "inventory_item_id" "available_adjustment"
11594563 34516664746035 1
11595526 34516664746851 -1
11215528 34516664567861 5
11595574 34516664745685 6

这是正在运行的当前脚本,但我需要手动更改有效负载和 运行 一次一个,我希望能够一次调整更多。

    var url = "https://**********.myshopify.com/admin/api/2021-01/inventory_levels/adjust.json";
  var payloaddata = {
  "location_id": "11594563",
  "inventory_item_id": "34516664746035",
  "available_adjustment": "-1"
  };
    var payload = JSON.stringify(payloaddata);
    var username = "*********";
    var 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); 
} ```

假设您的代码可以正常工作,那么试试这个: 我还假设您的 spreadsheet 看起来像您的 table,具有相同的 headers 和相同的列顺序

function shopifyPost() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet Name');
  const [hA, ...rows] = sh.getDataRange().getValues();
  const url = "https://**********.myshopify.com/admin/api/2021-01/inventory_levels/adjust.json";
  rows.forEach((r, i) => {
    let pld = {};
    pld[hA[0]] = r[0];
    pld[hA[1]] = r[1];
    pld[hA[2]] = r[2];
    let payload = JSON.stringify(pld);
    let username = "*********";
    let password = "*********";
    let 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);
} 

第一行看起来像这样:(在字符串化之后)

{"location_id":11594563,"inventory_item_id":34516664746035,"available_adjustment":1}

这是我的数据 sheet 的样子:

location_id inventory_item_id available_adjustment
11594563 34516664746035 1
11595526 34516664746851 -1
11215528 34516664567861 5
11595574 34516664745685 6