이 가이드에서는 Display & Video 360 API advertisers.assets
및 advertisers.creatives
서비스를 사용하여 광고 애셋을 업로드하고 Display & Video 360 Creative
리소스를 빌드하는 방법을 설명합니다.
기본 요건
Display & Video 360 API를 사용하여 광고 소재를 만들기 전에 다음 단계를 완료하세요.
사용자 또는 서비스 계정 이메일 주소로 식별되는 Display & Video 360 사용자 프로필에 광고주에 대한 읽기 및 쓰기 권한이 있는지 확인합니다. 읽기 및 쓰기 권한이 없는 경우 팀의 기존 관리자 사용자에게 문의하세요.
새 광고 소재 빌드
Display & Video 360 API를 통해 새 애셋으로 새 광고 소재를 만들려면 API 요청이 2회 이상 필요합니다. 첫 번째는 광고 애셋을 업로드하고 두 번째는 광고 객체를 생성합니다.
애셋 업로드
Display & Video 360에 필요한 광고 소재 assets
를 업로드하려면 advertisers.assets.upload
메서드를 호출합니다.
애셋은 광고 소재와 동일한 광고주에게 할당되어야 합니다.
애셋을 업로드하면 API는 asset
객체가 포함된 응답을 반환합니다. 나중에 이 asset
객체를 다시 가져올 수 없으므로 상응하는 mediaId
를 기록해 두세요. 이 저작물의 mediaId
는 저작물을 광고 소재에 할당하는 데 사용됩니다.
특정 광고 소재 유형은 특정 애셋 역할에서 특정 파일 형식만 애셋으로 허용합니다. 광고 소재에 적합한 파일 형식을 선택하는 방법에 관한 자세한 내용은 고객센터를 참고하세요.
다음은 저작물을 업로드하는 방법의 예입니다.
자바
// Create the asset upload request content. CreateAssetRequest content = new CreateAssetRequest(); content.setFilename(asset-filename); // Create input stream for the creative asset. InputStreamContent assetStream = new InputStreamContent( getMimeType(asset-filename), new FileInputStream(asset-path)); // Configure the asset upload request. Assets.Upload assetRequest = service.advertisers().assets() .upload(advertiser-id, content, assetStream); // Upload the asset. CreateAssetResponse assetResponse = assetRequest.execute(); // Display the new asset media ID. Asset asset = assetResponse.getAsset(); System.out.printf("The asset has been upload with media ID %s", asset.getMediaId());
이 예에서는 다음 도우미 함수를 사용하여 파일 MIME 유형을 찾습니다.
import java.net.FileNameMap; import java.net.URLConnection; private static String getMimeType(String fileName) { // Parse filename for appropriate MIME type. FileNameMap fileNameMap = URLConnection.getFileNameMap(); String mimeType = fileNameMap.getContentTypeFor(fileName); // If MIME type was found, return it. if (mimeType != null) { return mimeType; } // Otherwise, return a default value. return "application/octet-stream"; }
Python
# Create the request body. body = { 'filename': asset-filename } # Create upload object. media = MediaFileUpload(asset-path) if not media.mimetype(): media = MediaFileUpload(asset-path, 'application/octet-stream') # Upload the asset. response = service.advertisers().assets().upload( advertiserId=advertiser-id, body=body, media_body=media ).execute() # Display the new asset media ID. print("Asset was created with media ID %s." % response['asset']['mediaId'])
PHP
$body = new Google_Service_DisplayVideo_CreateAssetRequest(); $body->setFilename(asset-filename); $optParams = array( 'data' => file_get_contents(asset-path), 'mimeType' => mime_content_type(asset-filename), 'uploadType' => 'media' ); // Call the API, uploading the asset file to Display & Video 360. $result = $service->advertisers_assets->upload( advertiser-id, $body, $optParams ); // Display the new asset media ID. printf( 'Asset was created with media ID %s.', $result->getAsset()->getMediaId() );
cURL
curl --request POST \ 'https://displayvideo.googleapis.com/upload/v4/advertisers/advertiser-id/assets?uploadType=multipart' --header 'Authorization: Bearer access-token' \ -F "data={\"filename\": \"asset-filename\"};type=application/json;charset=UTF-8" \ -F "file=@asset-path;type=asset-mime-type"
광고 소재 만들기
확장 소재를 업로드하고 미디어 ID를 가져온 후에는 해당 확장 소재로 전체 Creative
객체를 빌드할 수 있습니다.
advertisers.creatives.create
메서드를 사용하여 새 Creative
를 만듭니다. 각 광고 소재 유형에는 Creative
필드의 하위 집합만 필요합니다.
각 광고 소재 유형의 UI 필드를 상응하는 API 필드에 매핑하는 방법에 관한 자세한 내용은 이 가이드의 부록을 참고하세요.
다음은 네이티브 디스플레이, HTML5, 동영상 광고 소재를 만드는 방법의 예입니다.
네이티브 디스플레이
자바
// Create a creative object. Creative creative = new Creative(); creative.setDisplayName(display-name); creative.setEntityStatus("ENTITY_STATUS_ACTIVE"); creative.setHostingSource("HOSTING_SOURCE_HOSTED"); // Set native creative type. creative.setCreativeType("CREATIVE_TYPE_NATIVE"); // Create a dimensions object. Dimensions dimensions = new Dimensions(); dimensions.setHeightPixels(creative-height-pixels); dimensions.setWidthPixels(creative-width-pixels); // Add the dimensions object to the creative object. creative.setDimensions(dimensions); // Create list for asset associations. List<AssetAssociation> assetAssociations = new ArrayList<AssetAssociation>(); // Assign the image asset to a role. AssetAssociation mainImageAssetAssociation = new AssetAssociation(); mainImageAssetAssociation.setAsset(new Asset().setMediaId(image-asset-media-id)); mainImageAssetAssociation.setRole("ASSET_ROLE_MAIN"); assetAssociations.add(mainImageAssetAssociation); // Assign the logo asset to a role. AssetAssociation iconAssetAssociation = new AssetAssociation(); iconAssetAssociation.setAsset(new Asset().setMediaId(logo-asset-media-id)); iconAssetAssociation.setRole("ASSET_ROLE_ICON"); assetAssociations.add(iconAssetAssociation); // Create and assign advertiser name asset. Asset advertiserNameAsset = new Asset(); advertiserNameAsset.setContent(advertiser-name); AssetAssociation advertiserNameAssetAssociation = new AssetAssociation(); advertiserNameAssetAssociation.setAsset(advertiserNameAsset); advertiserNameAssetAssociation.setRole("ASSET_ROLE_ADVERTISER_NAME"); assetAssociations.add(advertiserNameAssetAssociation); // Create and assign headline asset. Asset headlineAsset = new Asset(); headlineAsset.setContent(headline); AssetAssociation headlineAssetAssociation = new AssetAssociation(); headlineAssetAssociation.setAsset(headlineAsset); headlineAssetAssociation.setRole("ASSET_ROLE_HEADLINE"); assetAssociations.add(headlineAssetAssociation); // Create and assign body text asset. Asset bodyTextAsset = new Asset(); bodyTextAsset.setContent(body-text); AssetAssociation bodyTextAssetAssociation = new AssetAssociation(); bodyTextAssetAssociation.setAsset(bodyTextAsset); bodyTextAssetAssociation.setRole("ASSET_ROLE_BODY"); assetAssociations.add(bodyTextAssetAssociation); // Create and assign caption URL asset. Asset captionUrlAsset = new Asset(); captionUrlAsset.setContent(caption-url); AssetAssociation captionUrlAssetAssociation = new AssetAssociation(); captionUrlAssetAssociation.setAsset(captionUrlAsset); captionUrlAssetAssociation.setRole("ASSET_ROLE_CAPTION_URL"); assetAssociations.add(captionUrlAssetAssociation); // Create and assign call to action asset. Asset callToActionAsset = new Asset(); callToActionAsset.setContent(call-to-action); AssetAssociation callToActionAssetAssociation = new AssetAssociation(); callToActionAssetAssociation.setAsset(callToActionAsset); callToActionAssetAssociation.setRole("ASSET_ROLE_CALL_TO_ACTION"); assetAssociations.add(callToActionAssetAssociation); // Create and set the list of creative assets. creative.setAssets(assetAssociations); // Create an exit event. ExitEvent exitEvent = new ExitEvent(); exitEvent.setType("EXIT_EVENT_TYPE_DEFAULT"); exitEvent.setUrl(landing-page-url); // Create and set the list of exit events for the creative. creative.setExitEvents(ImmutableList.of(exitEvent)); // Configure the create request. Creatives.Create request = service.advertisers().creatives().create(advertiser-id, creative); // Send the request. Creative response = request.execute(); // Display the new creative. System.out.printf( "Creative %s was created.\n", response.getName());
Python
# Create a creative object. creative_obj = { 'displayName': display-name, 'entityStatus': 'ENTITY_STATUS_ACTIVE', 'hostingSource': 'HOSTING_SOURCE_HOSTED', 'creativeType': 'CREATIVE_TYPE_NATIVE', 'dimensions': { 'heightPixels': creative-height-pixels, 'widthPixels': creative-width-pixels }, 'assets': [ { 'asset': {'mediaId' : image-asset-media-id}, 'role': 'ASSET_ROLE_MAIN' }, { 'asset': {'mediaId' : logo-asset-media-id}, 'role': 'ASSET_ROLE_ICON' }, { 'asset': {'content' : advertiser-name}, 'role': 'ASSET_ROLE_ADVERTISER_NAME' }, { 'asset': {'content' : headline}, 'role': 'ASSET_ROLE_HEADLINE' }, { 'asset': {'content' : body-text}, 'role': 'ASSET_ROLE_BODY' }, { 'asset': {'content' : caption-url}, 'role': 'ASSET_ROLE_CAPTION_URL' }, { 'asset': {'content' : call-to-action}, 'role': 'ASSET_ROLE_CALL_TO_ACTION' }, ], 'exitEvents': [ { 'type': 'EXIT_EVENT_TYPE_DEFAULT', 'url': landing-page-url } ] } # Create the creative. creative = service.advertisers().creatives().create( advertiserId=advertiser-id, body=creative_obj ).execute() # Display the new creative. print("creative %s was created." % creative["name"])
PHP
// Create a creative object. $creative = new Google_Service_DisplayVideo_Creative(); $creative->setDisplayName(display-name); $creative->setEntityStatus('ENTITY_STATUS_ACTIVE'); $creative->setHostingSource('HOSTING_SOURCE_HOSTED'); // Set native creative type. $creative->setCreativeType('CREATIVE_TYPE_NATIVE'); // Create a dimensions object. $dimensions = new Google_Service_DisplayVideo_Dimensions(); $dimensions->setHeightPixels(creative-height-pixels); $dimensions->setWidthPixels(creative-width-pixels); // Add the dimensions object to the creative object. $creative->setDimensions($dimensions); // Create list for asset associations. $assetAssociations = array(); // Assign the image asset to a role. $imageAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $imageAsset = new Google_Service_DisplayVideo_Asset(); $imageAsset->setMediaId(image-asset-media-id); $imageAssetAssoc->setAsset($imageAsset); $imageAssetAssoc->setRole('ASSET_ROLE_MAIN'); $assetAssociations[] = $imageAssetAssoc; // Assign the logo asset to a role. $iconAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $iconAsset = new Google_Service_DisplayVideo_Asset(); $iconAsset->setMediaId(logo-asset-media-id); $iconAssetAssoc->setAsset($iconAsset); $iconAssetAssoc->setRole('ASSET_ROLE_ICON'); $assetAssociations[] = $iconAssetAssoc; // Create and assign advertiser name asset. $advNameAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $advNameAsset = new Google_Service_DisplayVideo_Asset(); $advNameAsset->setContent(advertiser-name); $advNameAssetAssoc->setAsset($advNameAsset); $advNameAssetAssoc->setRole('ASSET_ROLE_ADVERTISER_NAME'); $assetAssociations[] = $advNameAssetAssoc; // Create and assign headline asset. $headlineAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $headlineAsset = new Google_Service_DisplayVideo_Asset(); $headlineAsset->setContent(headline); $headlineAssetAssoc->setAsset($headlineAsset); $headlineAssetAssoc->setRole('ASSET_ROLE_HEADLINE'); $assetAssociations[] = $headlineAssetAssoc; // Create and assign body text asset. $bodyTextAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $bodyTextAsset = new Google_Service_DisplayVideo_Asset(); $bodyTextAsset->setContent(body-text); $bodyTextAssetAssoc->setAsset($bodyTextAsset); $bodyTextAssetAssoc->setRole('ASSET_ROLE_BODY'); $assetAssociations[] = $bodyTextAssetAssoc; // Create and assign caption URL asset. $captionUrlAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $captionUrlAsset = new Google_Service_DisplayVideo_Asset(); $captionUrlAsset->setContent(caption-url); $captionUrlAssetAssoc->setAsset($captionUrlAsset); $captionUrlAssetAssoc->setRole('ASSET_ROLE_CAPTION_URL'); $assetAssociations[] = $captionUrlAssetAssoc; // Create and assign call to action asset. $cToAAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $cToAAsset = new Google_Service_DisplayVideo_Asset(); $cToAAsset->setContent(call-to-action); $cToAAssetAssoc->setAsset($cToAAsset); $cToAAssetAssoc->setRole('ASSET_ROLE_CALL_TO_ACTION'); $assetAssociations[] = $cToAAssetAssoc; // Set the list of creative assets. $creative->setAssets($assetAssociations); // Create an exit event. $exitEvent = new Google_Service_DisplayVideo_ExitEvent(); $exitEvent->setType('EXIT_EVENT_TYPE_DEFAULT'); $exitEvent->setUrl(landing-page-url); // Create and set the list of exit events for the creative. $creative->setExitEvents(array($exitEvent)); // Send the create request. $result = $this->service->advertisers_creatives->create( advertiser-id, $creative ); printf('Creative %s was created.', $result['name']);
HTML5
자바
// Create a creative object. Creative creative = new Creative(); creative.setDisplayName(display-name); creative.setEntityStatus("ENTITY_STATUS_ACTIVE"); creative.setHostingSource("HOSTING_SOURCE_HOSTED"); // Set standard creative type. creative.setCreativeType("CREATIVE_TYPE_STANDARD"); // Create a dimensions object. Dimensions dimensions = new Dimensions(); dimensions.setHeightPixels(creative-height-pixels); dimensions.setWidthPixels(creative-width-pixels); // Add the dimensions object to the creative object. creative.setDimensions(dimensions); // Assign the HTML5 asset to a role. AssetAssociation assetAssociation = new AssetAssociation(); assetAssociation.setAsset(new Asset().setMediaId(html5-asset-media-id)); assetAssociation.setRole("ASSET_ROLE_MAIN"); // Create and set the list of creative assets. creative.setAssets(ImmutableList.of(assetAssociation)); // Create an exit event. ExitEvent exitEvent = new ExitEvent(); exitEvent.setName(exit-event-name); exitEvent.setType("EXIT_EVENT_TYPE_DEFAULT"); exitEvent.setUrl(exit-event-url); // Create and set the list of exit events for the creative. creative.setExitEvents(ImmutableList.of(exitEvent)); // Configure the create request. Creatives.Create request = service.advertisers().creatives().create(advertiser-id, creative); // Send the request. Creative response = request.execute(); // Display the new creative. System.out.printf( "Creative %s was created.\n", response.getName());
Python
# Create a creative object. creative_obj = { 'displayName': display-name, 'entityStatus': 'ENTITY_STATUS_ACTIVE', 'hostingSource': 'HOSTING_SOURCE_HOSTED', 'creativeType': 'CREATIVE_TYPE_STANDARD', 'dimensions': { 'heightPixels': creative-height-pixels, 'widthPixels': creative-width-pixels }, 'assets': [ { 'asset': {'mediaId' : html5-asset-media-id}, 'role': 'ASSET_ROLE_MAIN' } ], 'exitEvents': [ { 'name': exit-event-name, 'type': 'EXIT_EVENT_TYPE_DEFAULT', 'url': exit-event-url } ] } # Create the creative. creative = service.advertisers().creatives().create( advertiserId=advertiser-id, body=creative_obj ).execute() # Display the new creative. print("Creative %s was created." % creative["name"])
PHP
// Create a creative object. $creative = new Google_Service_DisplayVideo_Creative(); $creative->setDisplayName(display-name); $creative->setEntityStatus('ENTITY_STATUS_ACTIVE'); $creative->setHostingSource('HOSTING_SOURCE_HOSTED'); // Set standard creative type. $creative->setCreativeType('CREATIVE_TYPE_STANDARD'); // Create a dimensions object. $dimensions = new Google_Service_DisplayVideo_Dimensions(); $dimensions->setHeightPixels(creative-height-pixels); $dimensions->setWidthPixels(creative-width-pixels); // Add the dimensions object to the creative object. $creative->setDimensions($dimensions); // Assign the HTML asset to a role. $htmlAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $htmlAsset = new Google_Service_DisplayVideo_Asset(); $htmlAsset->setMediaId(html5-asset-media-id); $htmlAssetAssoc->setAsset($htmlAsset); $htmlAssetAssoc->setRole('ASSET_ROLE_MAIN'); // Create and set the list of creative assets. $creative->setAssets(array($htmlAssetAssoc)); // Create an exit event. $exitEvent = new Google_Service_DisplayVideo_ExitEvent(); $exitEvent->setName(exit-event-name); $exitEvent->setType('EXIT_EVENT_TYPE_DEFAULT'); $exitEvent->setUrl(exit-event-url); // Create and set the list of exit events for the creative. $creative->setExitEvents(array($exitEvent)); // Send the create request. $result = $this->service->advertisers_creatives->create( advertiser-id, $creative ); printf('Creative %s was created.', $result['name']);
동영상
자바
// Create a creative object. Creative creative = new Creative(); creative.setDisplayName(display-name); creative.setEntityStatus("ENTITY_STATUS_ACTIVE"); creative.setHostingSource("HOSTING_SOURCE_HOSTED"); // Set video creative type. creative.setCreativeType("CREATIVE_TYPE_VIDEO"); // Assign the video asset to a role. AssetAssociation assetAssociation = new AssetAssociation(); assetAssociation.setAsset(new Asset().setMediaId(video-asset-media-id)); assetAssociation.setRole("ASSET_ROLE_MAIN"); // Create and set the list of creative assets. creative.setAssets(ImmutableList.of(assetAssociation)); // Create an exit event. ExitEvent exitEvent = new ExitEvent(); exitEvent.setName(exit-event-name); exitEvent.setType("EXIT_EVENT_TYPE_DEFAULT"); exitEvent.setUrl(exit-event-url); // Create and set the list of exit events for the creative. creative.setExitEvents(ImmutableList.of(exitEvent)); // Configure the create request. Creatives.Create request = service.advertisers().creatives().create(advertiser-id, creative); // Send the request. Creative response = request.execute(); // Display the new creative. System.out.printf( "Creative %s was created.\n", response.getName());
Python
# Create a creative object. creative_obj = { 'displayName': display-name, 'entityStatus': 'ENTITY_STATUS_ACTIVE', 'hostingSource': 'HOSTING_SOURCE_HOSTED', 'creativeType': 'CREATIVE_TYPE_VIDEO', 'assets': [ { 'asset': {'mediaId' : video-asset-media-id}, 'role': 'ASSET_ROLE_MAIN' } ], 'exitEvents': [ { 'name': exit-event-name, 'type': 'EXIT_EVENT_TYPE_DEFAULT', 'url': exit-event-url } ] } # Create the creative. creative = service.advertisers().creatives().create( advertiserId=advertiser-id, body=creative_obj ).execute() # Display the new creative. print("creative %s was created." % creative["name"])
PHP
// Create a creative object. $creative = new Google_Service_DisplayVideo_Creative(); $creative->setDisplayName(display-name); $creative->setEntityStatus('ENTITY_STATUS_ACTIVE'); $creative->setHostingSource('HOSTING_SOURCE_HOSTED'); // Set video creative type. $creative->setCreativeType('CREATIVE_TYPE_VIDEO'); // Assign the video asset to a role. $videoAssetAssoc = new Google_Service_DisplayVideo_AssetAssociation(); $videoAsset = new Google_Service_DisplayVideo_Asset(); $videoAsset->setMediaId(video-asset-media-id); $videoAssetAssoc->setAsset($videoAsset); $videoAssetAssoc->setRole('ASSET_ROLE_MAIN'); // Create and set the list of creative assets. $creative->setAssets(array($videoAssetAssoc)); // Create an exit event. $exitEvent = new Google_Service_DisplayVideo_ExitEvent(); $exitEvent->setName(exit-event-name); $exitEvent->setType('EXIT_EVENT_TYPE_DEFAULT'); $exitEvent->setUrl(exit-event-url); // Create and set the list of exit events for the creative. $creative->setExitEvents(array($exitEvent)); // Send the create request. $result = $this->service->advertisers_creatives->create( advertiser-id, $creative ); printf('Creative %s was created.', $result['name']);