Kampanie Performance Max mają pewne wyjątkowe cechy, które dotyczą komponentów.
- Istnieje minimalna wymagana liczba zasobów różnych typów.
- Zasoby są grupowane w kolekcję o nazwie
AssetGroup
, która jest unikalna dla kampanii Performance Max. - Niektóre komponenty mogą być generowane automatycznie przez systemy uczące się.
Sprawdź, czy spełnione są minimalne wymagania dotyczące komponentów
Każdy element AssetGroup
w kampanii Performance Max wymaga początkowego minimalnego zestawu komponentów. Mogą to być dotychczasowe komponenty używane w innych kampaniach lub nowe komponenty przeznaczone specjalnie dla AssetGroup
w kampanii Performance Max.
Po połączeniu z Google Merchant Center handel detaliczny kampania Performance Max automatycznie generuje minimalny niezbędny zestaw komponentów. Zalecamy przesłanie dodatkowych zasobów, co pozwoli zmaksymalizować zasięg we wszystkich zasobach reklamowych. Pamiętaj, że w niektórych sytuacjach wymagania dotyczące komponentów mogą nadal obowiązywać w przypadku kampanii detalicznych.
Wymagane zasoby
Prośby o utworzenie AssetGroup
w kampanii innej niż handel detaliczny lub zaktualizowanie zasobów powiązanych z dowolnym elementem AssetGroup
nie zostaną zrealizowane, chyba że zostaną spełnione wszystkie wymagania z tabeli poniżej.
Wymagane zasoby TEXT |
# dozwolonych naAssetGroup |
|||
---|---|---|---|---|
AssetFieldType |
Limit znaków | Dodatkowe wymagania | Min. | Maksimum |
HEADLINE |
30 znaków | Co najmniej 1 zawierająca nie więcej niż 15 znaków | 3 | 15 |
LONG_HEADLINE |
90 znaków | 1 | 5 | |
DESCRIPTION |
90 znaków | Co najmniej 1 zawierająca nie więcej niż 60 znaków | 2 | 5 |
BUSINESS_NAME |
25 znaków | 1 | 1 |
Wymagane zasoby IMAGE |
# dozwolonych naAssetGroup |
|||||
---|---|---|---|---|---|---|
AssetFieldType |
Wymagany format obrazu | Zalecane wymiary | Minimalne wymiary | Maksymalny rozmiar pliku | Min. | Maksimum |
MARKETING_IMAGE |
Prostokąt w orientacji poziomej (1,91:1) | 1200 x 628 | 600 x 314 pikseli | 5120 KB | 1 | 20 |
SQUARE_MARKETING_IMAGE |
(1:1) | 1200 x 1200 pikseli | 300 x 300 pikseli | 5120 KB | 1 | 20 |
LOGO |
(1:1) | 1200 x 1200 pikseli | 128 x 128 | 5120 KB | 1 | 5 |
Jeśli spróbujesz połączyć komponent z obrazem, który nie jest zgodny ze specyfikacją współczynnika proporcji dla tego zasobu (AssetFieldType
), zwracana jest wartość ASPECT_RATIO_NOT_ALLOWED
. Nie odbywa się to podczas przesyłania zasobów.
Zasoby opcjonalne
Zasoby w tabeli poniżej są opcjonalne. Zalecamy przesłanie dodatkowych zasobów, co pozwoli zmaksymalizować zasięg we wszystkich zasobach reklamowych.
Opcjonalne zasoby IMAGE |
|||||
---|---|---|---|---|---|
AssetFieldType |
Wymagany format obrazu | Zalecane wymiary | Minimalne wymiary | Maksymalny rozmiar pliku | Maksymalna dozwolona liczba: na AssetGroup |
PORTRAIT_MARKETING_IMAGE |
(4:5) | 960 x 1200 | 400 x 600 | - | 20 |
LANDSCAPE_LOGO |
(4:1) | 1200 x 300 | 512 x 128 | 5120 KB | 20 |
Inne opcjonalne zasoby | |||||
---|---|---|---|---|---|
AssetFieldType |
Specyfikacja | Maks. # dozwolonych na AssetGroup |
|||
YOUTUBE_VIDEO |
Format obrazu w orientacji poziomej (16:9), kwadratowej (1:1) lub pionowej (9:16) o długości co najmniej 10 sekund | 5 | |||
CALL_TO_ACTION_SELECTION |
Automatycznie albo wybierz z listy | 1 | |||
MEDIA_BUNDLE |
Mniej niż 150 KB | 1 |
Przykładowy kod
Poniższy fragment kodu pokazuje, jak w nowym żądaniu utworzyć niezbędne powtarzające się zasoby:
Java
/** Creates multiple text assets and returns the list of resource names. */ private List<String> createMultipleTextAssets( GoogleAdsClient googleAdsClient, long customerId, List<String> texts) { List<MutateOperation> mutateOperations = new ArrayList<>(); for (String text : texts) { Asset asset = Asset.newBuilder().setTextAsset(TextAsset.newBuilder().setText(text)).build(); AssetOperation assetOperation = AssetOperation.newBuilder().setCreate(asset).build(); mutateOperations.add(MutateOperation.newBuilder().setAssetOperation(assetOperation).build()); } List<String> assetResourceNames = new ArrayList<>(); // Creates the service client. try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { // Sends the operations in a single Mutate request. MutateGoogleAdsResponse response = googleAdsServiceClient.mutate(Long.toString(customerId), mutateOperations); for (MutateOperationResponse result : response.getMutateOperationResponsesList()) { if (result.hasAssetResult()) { assetResourceNames.add(result.getAssetResult().getResourceName()); } } printResponseDetails(response); } return assetResourceNames; }
C#
/// <summary> /// Creates multiple text assets and returns the list of resource names. /// </summary> /// <param name="client">The Google Ads Client.</param> /// <param name="customerId">The customer's ID.</param> /// <param name="texts">The texts to add.</param> /// <returns>A list of asset resource names.</returns> private List<string> CreateMultipleTextAssets( GoogleAdsClient client, long customerId, string[] texts) { // Get the GoogleAdsService. GoogleAdsServiceClient googleAdsServiceClient = client.GetService(Services.V15.GoogleAdsService); MutateGoogleAdsRequest request = new MutateGoogleAdsRequest() { CustomerId = customerId.ToString() }; foreach (string text in texts) { request.MutateOperations.Add( new MutateOperation() { AssetOperation = new AssetOperation() { Create = new Asset() { TextAsset = new TextAsset() { Text = text } } } } ); } // Send the operations in a single Mutate request. MutateGoogleAdsResponse response = googleAdsServiceClient.Mutate(request); List<string> assetResourceNames = new List<string>(); foreach (MutateOperationResponse operationResponse in response.MutateOperationResponses) { MutateAssetResult assetResult = operationResponse.AssetResult; assetResourceNames.Add(assetResult.ResourceName); } PrintResponseDetails(response); return assetResourceNames; }
PHP
private static function createMultipleTextAssets( GoogleAdsClient $googleAdsClient, int $customerId, array $texts ): array { // Here again, we use the GoogleAdService to create multiple text assets in a single // request. $operations = []; foreach ($texts as $text) { // Creates a mutate operation for a text asset. $operations[] = new MutateOperation([ 'asset_operation' => new AssetOperation([ 'create' => new Asset(['text_asset' => new TextAsset(['text' => $text])]) ]) ]); } // Issues a mutate request to add all assets. $googleAdsService = $googleAdsClient->getGoogleAdsServiceClient(); /** @var MutateGoogleAdsResponse $mutateGoogleAdsResponse */ $mutateGoogleAdsResponse = $googleAdsService->mutate(MutateGoogleAdsRequest::build($customerId, $operations)); $assetResourceNames = []; foreach ($mutateGoogleAdsResponse->getMutateOperationResponses() as $response) { /** @var MutateOperationResponse $response */ $assetResourceNames[] = $response->getAssetResult()->getResourceName(); } self::printResponseDetails($mutateGoogleAdsResponse); return $assetResourceNames; }
Python
def create_multiple_text_assets(client, customer_id, texts): """Creates multiple text assets and returns the list of resource names. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. texts: a list of strings, each of which will be used to create a text asset. Returns: asset_resource_names: a list of asset resource names. """ # Here again we use the GoogleAdService to create multiple text # assets in a single request. googleads_service = client.get_service("GoogleAdsService") operations = [] for text in texts: mutate_operation = client.get_type("MutateOperation") asset = mutate_operation.asset_operation.create asset.text_asset.text = text operations.append(mutate_operation) # Send the operations in a single Mutate request. response = googleads_service.mutate( customer_id=customer_id, mutate_operations=operations, ) asset_resource_names = [] for result in response.mutate_operation_responses: if result._pb.HasField("asset_result"): asset_resource_names.append(result.asset_result.resource_name) print_response_details(response) return asset_resource_names
Ruby
# Creates multiple text assets and returns the list of resource names. def create_multiple_text_assets(client, customer_id, texts) operations = texts.map do |text| client.operation.mutate do |m| m.asset_operation = client.operation.create_resource.asset do |asset| asset.text_asset = client.resource.text_asset do |text_asset| text_asset.text = text end end end end # Send the operations in a single Mutate request. response = client.service.google_ads.mutate( customer_id: customer_id, mutate_operations: operations, ) asset_resource_names = [] response.mutate_operation_responses.each do |result| if result.asset_result asset_resource_names.append(result.asset_result.resource_name) end end print_response_details(response) asset_resource_names end
Perl
sub create_multiple_text_assets { my ($api_client, $customer_id, $texts) = @_; # Here again we use the GoogleAdService to create multiple text assets in a # single request. my $operations = []; foreach my $text (@$texts) { # Create a mutate operation for a text asset. push @$operations, Google::Ads::GoogleAds::V15::Services::GoogleAdsService::MutateOperation ->new({ assetOperation => Google::Ads::GoogleAds::V15::Services::AssetService::AssetOperation-> new({ create => Google::Ads::GoogleAds::V15::Resources::Asset->new({ textAsset => Google::Ads::GoogleAds::V15::Common::TextAsset->new({ text => $text })})})}); } # Issue a mutate request to add all assets. my $mutate_google_ads_response = $api_client->GoogleAdsService()->mutate({ customerId => $customer_id, mutateOperations => $operations }); my $asset_resource_names = []; foreach my $response (@{$mutate_google_ads_response->{mutateOperationResponses}}) { push @$asset_resource_names, $response->{assetResult}{resourceName}; } print_response_details($mutate_google_ads_response); return $asset_resource_names; }
grupy zasobów,
Każda kampania wymaga co najmniej 1 grupy komponentów. Komponenty są automatycznie łączone ze sobą i dopasowywane zależnie od tego, w którym kanale Google Ads (np. w YouTube, Gmailu lub wyszukiwarce) wyświetla się Twoja reklama.
Komponenty wygenerowane przy użyciu automatyzacji
Automatyzacja Google za pomocą systemów uczących się generuje w razie potrzeby dodatkowe komponenty, które obejmują wszystkie odpowiednie kanały.
Jeśli do grupy komponentów kampanii Performance Max nie dodasz żadnego filmu, możliwe, że wygenerujemy co najmniej 1 komponent wideo na podstawie komponentów z tej grupy. Jeśli nie chcesz już, aby w Twojej kampanii Performance Max wyświetlały się filmy generowane automatycznie, możesz przesłać własny film. Spowoduje to przerwanie wyświetlania filmów generowanych automatycznie.