Każdy element wysyłany do Google (za pomocą kanałów lub aktualizacji w czasie rzeczywistym) ma dołączoną wersję. Ta wersja ma postać sygnatury czasowej. W plikach danych sygnaturę czasową każdego elementu można podać za pomocą atrybutu dateModified
. Jeśli ten atrybut nie zawiera elementów kanału, wersja jest ustawiana na czas rozpoczęcia przetwarzania kanału. W aktualizacjach w czasie rzeczywistym do ustawienia wersji służą odpowiednio pola generation_timestamp
i delete_time
, odpowiednio batchPush
i batchDelete
. Jeśli to pole nie jest uwzględnione, wersja jest ustawiana na moment otrzymania żądania. Sprawdź oczekiwany format wartości czasowych w relacyjnym schemacie zasobów reklamowych.
Google przetwarza tylko elementy (takie jak restauracja, menu czy usługa) w wersji zgodnej z ostatnią akceptowaną wersją lub nowszą. W przeciwnym razie encja nie jest przetwarzana, a błąd Nieaktualny element jest rejestrowany. Przy aktualizowaniu elementu o nową wersję sygnatura czasowa ostatniej modyfikacji jest aktualizowana na bieżącą godzinę aktualizacji.
Przykład
Załóżmy, że 16 czerwca o godzinie 01:10 czasu UTC został wygenerowany plik danych zawierający ten przykładowy element.
{
"@type": "Restaurant",
"@id": "restaurant12345",
"dateModified": "2022-06-16T01:10:00.000Z",
...
}
Kanał nie został jeszcze przetworzony przez Google. Później tego samego dnia o 2022-06-16T01:22:00.000Z
Google otrzymuje żądanie aktualizacji w czasie rzeczywistym batchPush
z podanym elementem.
{
"records": [
{
"data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
"generation_timestamp": "2022-06-16T01:20:00.000Z"
}
]
}
Wersja identyfikatora jednostki restauracji restaurant12345
to teraz 2022-06-16T01:20:00.000Z
, a sygnatura czasowa ostatniej modyfikacji elementu jest ustawiona na 2022-06-16T01:22:00.000Z
. W skrócie czas ostatniej modyfikacji to czas aktualizacji elementu w zasobach reklamowych Google, a wersja to wartość generation_timestamp
z żądania aktualizacji w czasie rzeczywistym lub wartość dateModified
z pliku danych.
Przetwarzanie kanału rozpoczyna się 16 czerwca o godzinie 02:00 czasu UTC. W takiej sytuacji element otrzymany w kanale w wersji 2022-06-16T01:10:00.000Z
jest uważany za nieaktualny i nie jest przetwarzany. Dlatego Google nadal wyświetla encję w wersji 2022-06-16T01:20:00.000Z
z żądania aktualizacji w czasie rzeczywistym.
Sprawdzone metody:
- Zaimplementuj w plikach danych sygnaturę czasową dla każdego elementu.
- Zastosuj zmiany związane z aktualizacją w czasie rzeczywistym do następnego pliku danych i ustaw w elementach kanału sygnaturę czasową dateModified na czas bieżący w chwili utworzenia kanału.