ย้ายข้อมูลผลิตภัณฑ์

Merchant API นำเสนอวิธีที่แข็งแกร่งและใช้งานง่ายยิ่งขึ้นในการจัดการข้อมูลผลิตภัณฑ์ การเปลี่ยนแปลงหลักคือการแยกข้อมูลสินค้าออกเป็น 2 แหล่งข้อมูลที่แตกต่างกัน ได้แก่ ProductInput สำหรับการส่งข้อมูล และ Product สำหรับการดูเวอร์ชันสุดท้ายที่ประมวลผลแล้ว ซึ่งรวมถึงสถานะและปัญหาของสินค้า โครงสร้างใหม่นี้ จะช่วยให้ได้รับประสบการณ์ที่คาดการณ์ได้และโปร่งใสมากขึ้น

คู่มือนี้จะอธิบายความแตกต่างที่สำคัญเพื่อช่วยคุณย้ายข้อมูลการผสานรวมจาก Content API for Shopping ดูคำแนะนำโดยละเอียดเกี่ยวกับการใช้ฟีเจอร์ใหม่ได้ที่จัดการผลิตภัณฑ์

ความแตกต่างที่สำคัญ

ต่อไปนี้คือการเปลี่ยนแปลงที่สำคัญที่สุดเกี่ยวกับวิธีจัดการผลิตภัณฑ์ใน Merchant API เมื่อเทียบกับ Content API for Shopping

  • แหล่งข้อมูลเฉพาะสำหรับข้อมูลที่ป้อนและข้อมูลที่ประมวลผลแล้ว: Merchant API จะแบ่งการจัดการผลิตภัณฑ์ออกเป็น 2 แหล่งข้อมูล คุณสามารถใช้แหล่งข้อมูล ProductInput เพื่อแทรก อัปเดต และลบข้อมูลผลิตภัณฑ์ คุณสามารถใช้แหล่งข้อมูล อ่านอย่างเดียว Product เพื่อดูผลิตภัณฑ์สุดท้ายหลังจากที่ Google ประมวลผลข้อมูลที่คุณป้อน ใช้กฎ และรวมข้อมูลจากแหล่งข้อมูลเสริม

  • การเข้ารหัสชื่อผลิตภัณฑ์: คุณสามารถใช้การเข้ารหัส base64url แบบไม่เพิ่มแพด (RFC 4648 ส่วนที่ 5) สำหรับทั้งฟิลด์ ProductInput.name และ Product.name ในกรณีที่ชื่อผลิตภัณฑ์มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL คุณต้องเข้ารหัส ตัวอย่างเช่น คุณต้อง เข้ารหัสชื่อผลิตภัณฑ์หากมีอักขระต่อไปนี้

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • สถานะผลิตภัณฑ์ที่ผสานรวม: ระบบนำบริการ productstatuses ออกแล้ว ตอนนี้ปัญหาการตรวจสอบผลิตภัณฑ์และสถานะปลายทางจะรวมอยู่ในทรัพยากร Product โดยตรงภายในฟิลด์ productStatus ซึ่งจะช่วยให้การดึงข้อมูลง่ายขึ้น

  • การอัปเดตผลิตภัณฑ์ที่คาดการณ์ได้: วิธีการใหม่ productInputs.patch จะแก้ไขอินพุตของผลิตภัณฑ์ที่เฉพาะเจาะจงโดยตรง ซึ่งเป็นการปรับปรุงที่สำคัญกว่า Content API สำหรับ Shopping ซึ่งการอัปเดตอาจถูกเขียนทับโดยการอัปโหลดฟีดอื่นๆ โดยไม่คาดคิด ใน Merchant API การอัปเดตจะยังคงอยู่จนกว่าจะมีการอัปเดตหรือลบอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงนั้นอีกครั้ง การอัปเดตผลิตภัณฑ์จะใช้กับ ProductInput ทรัพยากรแทนที่จะใช้กับ Product ทรัพยากรที่ประมวลผลแล้ว

  • เลือกแหล่งข้อมูลเพื่อการจัดการข้อมูลที่สะอาดขึ้น: ตอนนี้productInputs การดำเนินการเขียนทั้งหมดต้องมีพารามิเตอร์การค้นหา dataSource ซึ่งจะระบุ แหล่งข้อมูลที่คุณกำลังแก้ไขอย่างชัดเจน ซึ่งจะเป็นประโยชน์อย่างยิ่งหากคุณมีแหล่งข้อมูลหลายแหล่งที่ให้ข้อมูล

  • ตัวระบุทรัพยากรใหม่: ตอนนี้ระบบจะระบุผลิตภัณฑ์ด้วยทรัพยากร RESTful name แทนฟิลด์ id รูปแบบคือ accounts/{account}/products/{product}

  • ไม่มีกลุ่มที่กำหนดเอง: วิธี custombatch ไม่พร้อมใช้งานอีกต่อไป คุณใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP เพื่อส่งคำขอหลายรายการในการเรียก HTTP เดียวได้

หลักเกณฑ์ของแหล่งข้อมูลระหว่างการย้ายข้อมูล

ก่อนที่จะย้ายข้อมูลแหล่งข้อมูล เราขอแนะนำอย่างยิ่งให้คุณ เลือกกลยุทธ์แหล่งข้อมูล

โปรดทำตามคำแนะนำต่อไปนี้เพื่อให้การย้ายข้อมูลเป็นไปอย่างราบรื่นและป้องกันปัญหาต่างๆ เช่น การขโมยข้อเสนอ

  • การเติมข้อมูลในฐานข้อมูล: แทนที่จะเรียกใช้ dataSources.list ก่อนการดำเนินการกับผลิตภัณฑ์ทุกครั้ง เราขอแนะนำอย่างยิ่งให้คุณเติมข้อมูลในฐานข้อมูลในเครื่องเพียงครั้งเดียว เพิ่มdataSourceฟิลด์ชื่อใน ระเบียนผลิตภัณฑ์แต่ละรายการเพื่อให้คุณระบุตัวระบุที่ถูกต้องได้โดยตรงใน คำขอ

  • รวมและใช้แหล่งข้อมูลสำหรับป้ายกำกับและภาษาใดก็ได้ Merchant API ช่วยให้คุณสร้างแหล่งข้อมูลได้โดยไม่ต้องระบุ ป้ายกำกับแหล่งข้อมูลและภาษา จึงช่วยให้คุณแทรกผลิตภัณฑ์ที่มี ป้ายกำกับแหล่งข้อมูลและภาษาของแหล่งข้อมูลใดก็ได้ พิจารณาใช้แหล่งข้อมูลเดียวสำหรับป้ายกำกับและภาษา

  • ปกป้องผลิตภัณฑ์: หากใช้กฎแหล่งข้อมูล ให้เรียกใช้ products.get เพื่อค้นหา dataSource ที่เชื่อมโยงกับผลิตภัณฑ์อย่างแน่นอนก่อนที่จะอัปเดตหรือ ลบผลิตภัณฑ์ ซึ่งจะช่วยให้มั่นใจได้ว่าคุณกำลังแก้ไขแหล่งที่มาที่ต้องการ และ ป้องกันการขโมยข้อเสนอโดยไม่ตั้งใจ

คำขอ

ส่วนนี้จะเปรียบเทียบรูปแบบคำขอสำหรับ Content API for Shopping และ Merchant API

รายละเอียดสำหรับคำขอ Content API for Shopping Merchant API
ซื้อผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
แสดงรายการสินค้า GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
แทรกผลิตภัณฑ์ POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert
อัปเดตผลิตภัณฑ์ PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
ลบผลิตภัณฑ์ DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
ดูสถานะผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
แสดงรายการสถานะผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
จัดกลุ่มคำขอหลายรายการ POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP

รหัสระบุ

รูปแบบของตัวระบุผลิตภัณฑ์มีการเปลี่ยนแปลงใน Merchant API เป็นชื่อทรัพยากร REST มาตรฐาน

คำอธิบายตัวระบุ Content API for Shopping Merchant API
ID ผลิตภัณฑ์ สตริงที่ประกอบด้วยกลุ่มที่คั่นด้วยเครื่องหมายโคลอน (:)
รูปแบบ: channel:contentLanguage:targetCountry:offerId หรือ channel:contentLanguage:feedLabel:offerId
ตัวอย่าง: online:en:US:sku123
สตริงnameของทรัพยากร REST
รูปแบบ: accounts/{account}/products/{product} โดยที่ {product} คือ contentLanguage~feedLabel~offerId
ตัวอย่าง: accounts/12345/products/en~US~sku123
การเข้ารหัส: ขอแนะนำให้ใช้การเข้ารหัส base64url ที่ไม่มีการเพิ่มแพดดิ้ง และต้องใช้ในกรณีที่รหัสผลิตภัณฑ์มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL

เมธอด

ตารางนี้แสดงเมธอด Content API for Shopping และเมธอดที่เทียบเท่าใน Merchant API

วิธีการ Content API for Shopping เมธอดของ Merchant API ความพร้อมใช้งานและหมายเหตุ
products.get products.get ดึงข้อมูลผลิตภัณฑ์สุดท้ายที่ประมวลผลแล้ว
products.list products.list แสดงผลิตภัณฑ์สุดท้ายที่ประมวลผลแล้ว
products.insert productInputs.insert แทรกอินพุตผลิตภัณฑ์ ต้องมี dataSource
products.update productInputs.patch พฤติกรรมแตกต่างกันอย่างมาก โดยจะอัปเดตอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงและคงอยู่
products.delete productInputs.delete ลบอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจง ต้องมี dataSource
products.custombatch ไม่พร้อมใช้งาน ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP
productstatuses.get products.get ระบบจะนำบริการ productstatuses ออก ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว
productstatuses.list products.list ระบบจะนำบริการ productstatuses ออก ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว
productstatuses.custombatch ไม่พร้อมใช้งาน ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP

การเปลี่ยนแปลงฟิลด์โดยละเอียด

ตารางนี้ไฮไลต์ฟิลด์สำคัญที่ได้รับการเปลี่ยนแปลง เพิ่ม หรือนำออก ใน Merchant API

Content API for Shopping Merchant API คำอธิบาย
id name ตอนนี้ตัวระบุหลักสำหรับผลิตภัณฑ์คือทรัพยากร REST name การเข้ารหัส base64url แบบไม่มีการเพิ่ม Padding ที่แนะนำและบังคับในกรณีที่ชื่อผลิตภัณฑ์มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL
แอตทริบิวต์ข้อกำหนดในการจัดทำข้อมูลสินค้าผลิตภัณฑ์ระดับบนสุด (เช่น title, price, link) วัตถุ productAttributes รายการ แอตทริบิวต์ผลิตภัณฑ์ เช่น title, price และ link จะไม่ใช่ฟิลด์ระดับบนสุดอีกต่อไป ตอนนี้ระบบจะจัดกลุ่มไว้ในออบเจ็กต์ productAttributes ทั้งในทรัพยากร Product และ ProductInput ซึ่งจะช่วยให้โครงสร้างทรัพยากรมีความสะอาดและเป็นระเบียบมากขึ้น
targetCountry feedLabel ตอนนี้ชื่อทรัพยากรใช้ feedLabel แทน targetCountry เพื่อให้สอดคล้องกับฟังก์ชันการทำงานของ Merchant Center
feedId dataSource (พารามิเตอร์การค้นหา) ตอนนี้ dataSource ชื่อเป็นพารามิเตอร์การค้นหาที่จำเป็นสำหรับเมธอดเขียน productInputs ทั้งหมด (insert, update, delete)
channel ไม่พร้อมใช้งาน ใช้ legacy_local สำหรับผลิตภัณฑ์ในร้านเท่านั้น ฟิลด์ channel ไม่มีอยู่ใน Merchant API อีกต่อไป ผลิตภัณฑ์ที่มีLOCAL channel ใน Content API for Shopping ควรตั้งค่าฟิลด์ legacy_local เป็นจริงแทน
ไม่พร้อมใช้งาน versionNumber ฟิลด์ใหม่ที่ไม่บังคับใน ProductInput ซึ่งใช้เพื่อป้องกันการแทรกที่ไม่เป็นไปตามลำดับลงในแหล่งข้อมูลหลัก
string ฟิลด์ประเภทที่มีชุดค่าที่กำหนด enum ฟิลด์ประเภทที่มีชุดค่าที่กำหนด ฟิลด์ภายในคุณสมบัติของสินค้าที่มีชุดค่าที่กำหนด (เช่น excluded_destinations, availability) จะเป็นประเภท enum