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

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 for 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
รหัสสินค้า สตริงที่ประกอบด้วยกลุ่มที่คั่นด้วยโคลอน (:)
รูปแบบ: 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 แบบไม่มีการเติม และจำเป็นในกรณีที่ชื่อสินค้ามีอักขระที่ 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 ใน Content API for Shopping ควรตั้งค่าช่อง legacy_local เป็น "จริง" แทน
ไม่พร้อมใช้งาน versionNumber ฟิลด์ตัวเลือกใหม่ใน ProductInput ซึ่งใช้เพื่อป้องกันการแทรกที่ไม่เป็นไปตามลำดับลงในแหล่งข้อมูลหลักได้
ช่องประเภท string ที่มีชุดค่าที่กำหนดไว้ ช่องประเภท enum ที่มีชุดค่าที่กำหนดไว้ ตอนนี้ช่องภายในคุณสมบัติของสินค้าที่มีชุดค่าที่กำหนด (เช่น excluded_destinations, availability) เป็นประเภท enum แล้ว