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

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
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 ตอนนี้ตัวระบุหลักสำหรับผลิตภัณฑ์คือ name แหล่งข้อมูล REST ขอแนะนำการเข้ารหัส 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 แล้ว