實體版本管理

無論是透過動態饋給或即時更新傳送給 Google 的每個實體,都會附上版本。這個版本的格式為時間戳記。在動態饋給中,您可以使用 dateModified 屬性為每個實體提供時間戳記。如果動態饋給實體未包含這項屬性,版本會設為動態饋給攝入作業的開始時間。在即時更新 batchPushbatchDelete 中,分別使用 generation_timestampdelete_time 欄位設定版本。如果未包含這個欄位,系統會將版本設為收到要求的時間。請參閱關聯式廣告空間結構定義中的時間值預期格式。

Google 只會處理版本與最新接受版本相同或更新的實體 (例如餐廳、菜單或服務)。否則系統不會擷取實體,並記錄 Stale Entity 錯誤。當實體以新版本更新時,上次修改時間戳記會更新為目前的更新時間。

範例

假設動態饋給是在 6 月 16 日 01:10 (世界標準時間) 產生,且包含下列實體範例。

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

Google 尚未擷取動態饋給。當天稍晚的 2022-06-16T01:22:00.000Z,Google 收到含有下列實體的即時更新 batchPush 要求。

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

餐廳實體 ID restaurant12345 的版本現在為 2022-06-16T01:20:00.000Z,實體的上次修改時間戳記則設為 2022-06-16T01:22:00.000Z。簡而言之,上次修改時間是指實體在 Google 商品目錄中更新的時間,而版本則是即時更新要求中的 generation_timestamp 值,或是動態饋給中的 dateModified 值。

動態饋給的攝入作業會在 6 月 16 日世界標準時間 02:00 開始。在這種情況下,系統會將動態饋給中版本為 2022-06-16T01:10:00.000Z 的實體視為過時,因此不會擷取。因此,Google 會繼續提供即時更新要求中的版本 2022-06-16T01:20:00.000Z 實體。

最佳做法:

  • 在每個實體的動態饋給中導入時間戳記。
  • 即時更新變更套用至下一個動態饋給,並將動態饋給實體中的dateModified 時間戳記設為建立動態饋給時的目前時間。