จัดการการจัดกลุ่มตามภูมิภาค

ภูมิภาค Merchant API แสดงถึงภูมิภาคทางภูมิศาสตร์ที่คุณใช้เป็นเป้าหมายที่เกี่ยวข้องกับaccounts.products.regionalInventoriesทรัพยากรได้ คุณสามารถ กำหนดภูมิภาคเป็นคอลเล็กชันของรหัสไปรษณีย์ หรือในบางประเทศ ใช้การกำหนดเป้าหมายตามภูมิศาสตร์ที่กำหนดไว้ล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่ตั้งค่า ภูมิภาค

Merchant API มีปลายทางแบบกลุ่มสำหรับการจัดการภูมิภาค ซึ่งช่วยให้คุณสร้าง อัปเดต และลบภูมิภาคได้สูงสุด 100 ภูมิภาคในการเรียกใช้ API ครั้งเดียว ซึ่งเหมาะสำหรับผู้ขายที่จัดการความพร้อมจำหน่ายสินค้าและการกำหนดราคาระดับภูมิภาค (RAAP) ในวงกว้าง ช่วยเพิ่มประสิทธิภาพและลดความซับซ้อนในการผสานรวม

ภาพรวม

Batch API ช่วยให้คุณทำสิ่งต่อไปนี้ได้ด้วยเมธอดที่เกี่ยวข้อง

  • สร้างหลายภูมิภาคในคำขอเดียว regions:batchCreate
  • ลบหลายภูมิภาคพร้อมกัน: regions:batchDelete
  • อัปเดตหลายภูมิภาคพร้อมกัน regions:batchUpdate

ข้อกำหนดเบื้องต้น

คำขอแบบกลุ่มทั้งหมดต้องมีบทบาทผู้ใช้ ADMIN สำหรับการตรวจสอบสิทธิ์

สร้างหลายภูมิภาค

ตัวอย่างนี้แสดงวิธีสร้างภูมิภาคใหม่ 2 แห่ง โดยแห่งหนึ่งกำหนดตามรหัสไปรษณีย์ และอีกแห่งกำหนดตามการกำหนดเป้าหมายตามภูมิศาสตร์ในการเรียกใช้ BatchCreateRegions ครั้งเดียว

ส่งคำขอ

สร้าง URL คำขอ ดังนี้

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate

เนื้อความของคำขอมีรายการ requests โดยแต่ละออบเจ็กต์จะระบุ regionId และข้อมูล region ที่จะสร้าง

{
  "requests": [
    {
      "regionId": "seattle-area-98340",
      "region": {
        "displayName": "Seattle Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98340"
            }
          ]
        }
      }
    },
    {
      "regionId": "co-de-states",
      "region": {
        "displayName": "Colorado and Delaware",
        "geoTargetArea": {
          "geotargetCriteriaIds": [
            "21138",
            "21141"
          ]
        }
      }
    }
  ]
}

การตอบกลับ

คำขอที่สำเร็จจะแสดงรายการออบเจ็กต์ region ใหม่

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/seattle-area-98340",
      "displayName": "Seattle Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98340"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/co-de-states",
      "displayName": "Colorado and Delaware",
      "geotargetArea": {
        "geotargetCriteriaIds": [
          "21138",
          "21141"
        ]
      },
      "regionalInventoryEligible": false,
      "shippingEligible": false
    }
  ]
}

อัปเดตหลายภูมิภาค

ตัวอย่างนี้แสดงวิธีใช้ BatchUpdateRegions เพื่ออัปเดต displayName และ postalCodeArea สำหรับ 2 ภูมิภาคที่มีอยู่ คุณต้องระบุ region.name เพื่ออัปเดตภูมิภาคเป้าหมาย

ส่งคำขอ

สร้าง URL คำขอ ดังนี้

POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate

เนื้อหาของคำขอมีรายการ requests ออบเจ็กต์แต่ละรายการต้องระบุregionที่จะอัปเดต region.name ต้องมีรหัสของ ภูมิภาคที่จะอัปเดต เช่น "98005" ระบุแหล่งข้อมูลเป็น name แทน accounts/{ACCOUNT_ID}/regions/name คุณจะใส่ updateMask เพื่อระบุ ช่องที่จะเปลี่ยนแปลงหรือไม่ก็ได้

{
  "requests": [
    {
      "region": {
        "name": "98005",
        "displayName": "Seattle Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98330"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    },
    {
      "region": {
        "name": "07086",
        "displayName": "NewYork Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "11*"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    }
  ]
}

การตอบกลับ

คำขอที่สำเร็จจะแสดงรายการออบเจ็กต์ region ที่อัปเดต

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/98005",
      "displayName": "Seattle Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98330"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/07086",
      "displayName": "NewYork Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "11*"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    }
  ]
}

ลบหลายภูมิภาค

คุณลบหลายภูมิภาคในการเรียกใช้ครั้งเดียวได้

ส่งคำขอ

ตัวอย่างนี้แสดงวิธีใช้ BatchDeleteRegions เพื่อลบ 2 ภูมิภาคในการเรียกใช้ครั้งเดียว

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete

เนื้อความของคำขอมีรายการ requests ซึ่งแต่ละออบเจ็กต์จะระบุ name (ไม่มี "accounts/{ACCOUNT_ID}/regions/") ของภูมิภาคที่จะลบ

{
  "requests":
   [
    {
      "name": "98005"
    },
    {
      "name": "07086"
    }
   ]
}

การตอบกลับ

คำขอที่สำเร็จจะแสดงเนื้อหาการตอบกลับที่ว่างเปล่า ซึ่งบ่งชี้ว่าระบบได้ลบภูมิภาคที่ระบุแล้ว (หรือไม่มีภูมิภาคดังกล่าว)

{}

ข้อจำกัด

โปรดคำนึงถึงกฎต่อไปนี้ก่อนที่จะเริ่มต้น

  • การดำเนินการแบบอะตอมมิก: คำขอแบบกลุ่มเป็นแบบอะตอมมิก หากการดำเนินการใดก็ตาม ภายในกลุ่มไม่สำเร็จ (เช่น สร้างภูมิภาคหนึ่งไม่สำเร็จ) ทั้งกลุ่มจะไม่สำเร็จ และจะไม่มีการเปลี่ยนแปลงใดๆ API จะแสดงข้อผิดพลาดที่ระบุรายละเอียดสาเหตุของความล้มเหลว
  • ขีดจำกัดของกลุ่ม: คำขอแบบกลุ่มแต่ละรายการมีได้สูงสุด 100 การดำเนินการในภูมิภาค
  • โควต้า: ปลายทางเหล่านี้ใช้กลุ่มโควต้าเดียวกันกับปลายทางแบบการดำเนินการเดียว (regions.create, regions.delete, regions.update)

ข้อผิดพลาดและปัญหาที่พบบ่อย

ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไขมีดังนี้

"จำนวนคำขอในกลุ่มมีมากเกินไป"

ข้อผิดพลาดนี้เกิดขึ้นหากจำนวนการดำเนินการในอาร์เรย์คำขอเกินขีดจำกัด 100

"error":
  {
    "code": 400,
    "message": "The number of requests in a batch is too large.",
    "status": "INVALID_ARGUMENT"
  }

หากต้องการแก้ไขปัญหานี้ ให้แบ่งการดำเนินการออกเป็นคำขอแบบกลุ่มหลายรายการที่มีคำขอไม่เกิน 100 รายการ

ไม่มีข้อมูลในช่องที่ต้องระบุ

ข้อผิดพลาดนี้เกิดขึ้นเมื่อไม่มีข้อมูลในช่องที่ต้องกรอก ข้อความแสดงข้อผิดพลาดจะระบุ พารามิเตอร์ที่ขาดหายไป

ข้อความแสดงข้อผิดพลาดมีดังนี้

  • สำหรับ batchCreate: [regionId] Required parameter: regionId
  • สำหรับ batchUpdate: [region.name] Required field not provided.
  • สำหรับ batchDelete: [name] Required parameter: name

หากต้องการแก้ไขปัญหานี้ ให้ตรวจสอบว่ามีช่องที่ต้องกรอกทั้งหมดในการดำเนินการแต่ละครั้ง เช่น ทุกรายการในคำขอ batchUpdate ต้องมี region.name การโพสต์คำขอต่อไปนี้จะทำให้เกิดข้อผิดพลาด

{
  "requests":
  [
    {
      "region":
        {
          "displayName": "An update without a region name"
        },
        "updateMask": "displayName"
    }
  ]
}

"มีภูมิภาคที่มีรหัสที่ระบุอยู่แล้ว"

ระบบจะแสดงข้อผิดพลาดหากคุณพยายามสร้างภูมิภาคที่มีregionIdที่ มีอยู่แล้ว

ข้อความแสดงข้อผิดพลาดคือ [regionId] Region with specified id already exists.

หากต้องการแก้ไขปัญหานี้ ให้ตรวจสอบว่าค่า regionId ทั้งหมดไม่ซ้ำกันภายในกลุ่มและ ไม่ขัดแย้งกับภูมิภาคที่มีอยู่

"พบค่าที่ซ้ำกันสำหรับฟิลด์ region.name หรือพบ regionId"

ระบบจะแสดงข้อผิดพลาดหากคุณพยายามสร้างหรืออัปเดตหลายภูมิภาคด้วยรหัสเดียวกัน ภายในคำขอแบบกลุ่มเดียว

ข้อความแสดงข้อผิดพลาดคือ Duplicate value found for field {fieldName} in this batch request with value {duplicated_value}.

หากต้องการแก้ไขปัญหานี้ ให้ตรวจสอบว่าค่า regionId ทั้งหมด (สำหรับ batchCreate) หรือ region.name (สำหรับ batchUpdate) ไม่ซ้ำกันภายในคำขอแบบกลุ่มเดียว

"ไม่พบรายการ"

เมื่อใช้ batchUpdate หากไม่มีภูมิภาคใดๆ ที่ระบุในคำขอ ทั้งชุดจะล้มเหลวพร้อมข้อผิดพลาด 404 NOT_FOUND ซึ่งแตกต่างจาก batchDeleteที่สำเร็จสำหรับภูมิภาคที่ไม่มีอยู่

"error": {
    "code": 404,
    "message": "item not found",
    "status": "NOT_FOUND"
}

หากต้องการแก้ไขปัญหานี้ ให้ตรวจสอบว่าภูมิภาคทั้งหมดที่คุณพยายามอัปเดตมีอยู่ก่อน ส่งคำขอ