مدیریت هدفیابی منابع یکی از ویژگیهای اصلی Display & Video 360 API است. هدف گذاری را می توان به چندین نوع منبع اختصاص داد و از تعدادی دیگر منابع و فضاهای شناسه استفاده می کند. این صفحه محدودیتهایی را که باید توجه داشته باشید و بهترین روشها را برای استفاده از خدمات گزینههای هدف اختصاص داده شده Display & Video 360 API توضیح میدهد.
از وراثت هدفمند استفاده کنید
هدف گذاری اختصاص داده شده به برخی منابع می تواند توسط منابع فرزند آنها به ارث برسد. گزینه های هدف به ارث رسیده توسط یک منبع فرزند قابل بازیابی هستند اما در سطح منبع فرزند قابل ویرایش نیستند. این امکان را فراهم می کند که تنظیمات ایمنی نام تجاری و سایر هدف گذاری ها در کل شریک یا تبلیغ کننده اعمال شود.
مسیر وراثت در نمودار زیر قابل مشاهده است:
همانطور که در نمودار مشخص شده است، برخی از سطوح هدف تنها از زیر مجموعه ای از انواع هدف گذاری پشتیبانی می کنند. این بدان معنی است که برخی از گزینه های هدف را نمی توان در سطوح بالاتر تنظیم کرد و به ارث رسید، بلکه باید در سطح پایین تر تنظیم شود.
ارث در منابع YouTube & Partners
وراثت هدف برای منابع YouTube & Partners در Display & Video 360 API منعکس نمی شود. هدف به ارث رسیده توسط Ad Groups در سطح AdGroup
قابل بازیابی نخواهد بود و هدف YouTube اختصاص داده شده به منابع والدین توسط منابع فرزند به ارث نمی رسد.
برای بازیابی همه تنظیمات هدفیابی عملکردی برای یک گروه تبلیغاتی، باید گزینههای هدفیابی اختصاص داده شده برای گروه آگهی ، مورد خط اصلی و تبلیغکننده اصلی را بازیابی کنید.
از هدف گذاری تعیین شده در ایجاد آیتم خط آگاه باشید
به غیر از گزینه های هدف گذاری ارثی، بیشتر هدف گذاری ها فقط پس از ایجاد یک آیتم خطی قابل تخصیص هستند. با این حال، چند نوع هدف وجود دارد که یک زیرمجموعه از مقادیر پیشفرض به آیتمهای خط در ایجاد آیتم خط اختصاص داده شده است. انواع هدف گذاری عبارتند از:
تلاش برای ایجاد یا حذف گزینههای هدفیابی تخصیصیافته موجود، خطایی را برمیگرداند، بنابراین توصیه میکنیم که از مجموعه کامل هدفیابی که در زمان ایجاد به موارد خط شما اختصاص داده میشود، آگاه باشید. اگر نیاز به بازیابی هدف گذاری اختصاص داده شده به یک آیتم خط در انواع هدف دارید، از advertisers.lineItems.bulkListAssignedTargetingOptions
استفاده کنید.
علاوه بر این، برخی تنظیمات به صورت پیشفرض تنظیم میشوند که هیچ گزینه هدفگیری از آن نوع به منبع اختصاص داده نشده باشد. به عنوان مثال، اگر منبعی دارای گزینه هدف گذاری TARGETING_TYPE_AUTHORIZED_SELLER_STATUS
تعریف نشده باشد، به این معنی است که از وضعیت "فروشندگان و فروشندگان مستقیم مجاز" استفاده می کند.
انتظار "هدف گذاری پیش فرض" خودکار را نداشته باشید
در Display & Video 360، هدف گذاری تنظیم شده در سطح کمپین یا سفارش درج بلافاصله به موارد خط فرزند آنها منتقل نمی شود. این هدفگیری به عنوان « هدفگیری پیشفرض » شناخته میشود و بهعنوان یک الگوی هدفگیری استفاده میشود که روی موارد خطی که متعاقباً در UI ایجاد میشوند، اعمال میشود.
در Display & Video 360 API، هدفیابی پیشفرض بهطور خودکار برای موارد خط جدید ایجاد شده اعمال نمیشود. ایجاد مورد خط اصلی روی هیچ کمپین یا هدف گذاری سطح سفارش درج کپی نمی شود. در این حالت، هدف گذاری مورد نظر باید از طریق روش های ایجاد گزینه هدف گذاری اختصاص داده شده یا روش های ویرایش انبوه، روی موارد خط به طور جداگانه اعمال شود.
روش های خاص می تواند یک استثنا باشد. به عنوان مثال، موارد خطی که از طریق تنظیمات کپی advertisers.lineItems.generateDefault
از ترتیب درج والد آنها، از جمله هدف گذاری اختصاص داده شده، ایجاد شده است. به طور مشابه، اقلام خط ایجاد شده از طریق تکرار ، همان هدف گذاری را به عنوان خط اصلی اختصاص داده می شود.
هدف گذاری YouTube و شرکا را نمی توان تغییر داد
با استفاده از Display & Video 360 API نمیتوان هدفگیری ویژه کمپینهای YouTube و Partners را بهروزرسانی کرد.
هدفیابی YouTube & Partners شامل همه هدفگیریهایی است که مستقیماً به موارد و گروههای تبلیغاتی YouTube & Partners اختصاص داده میشود، و همچنین هر نوع هدفگیری از انواع هدفگذاری زیر:
-
TARGETING_TYPE_SESSION_POSITION
-
TARGETING_TYPE_YOUTUBE_CHANNEL
-
TARGETING_TYPE_YOUTUBE_VIDEO
این هدف را می توان با استفاده از رابط کاربری Display & Video 360 به طور مستقیم یا با آپلود یک فایل داده ساختاریافته به روز کرد.
هدف گذاری مخاطب را با یک گزینه اختصاص دهید
گزینه های هدف برای اکثر انواع هدف به صورت جداگانه اختصاص داده می شود. هدفگیری گروه مخاطب از این قرارداد مدولار پیروی نمیکند، اما در عوض در یک شیء هدفگیری جزئیات گروه مخاطبان قابل تنظیم اختصاص داده میشود که شناسههای مخاطبان را فهرست میکند که باید در هنگام ارائه تبلیغات گنجانده شوند و حذف شوند. گزینه assignedTargetingOptionId
برای این گروه مخاطب، پس از اختصاص دادن، همیشه "AudienceGroup" است.
این طراحی به این معنی است که هر تغییری در هدف گیری گروه مخاطبان باید ابتدا با حذف گزینه هدف گذاری اختصاص داده شده به گروه مخاطبان و سپس ایجاد یک گزینه جدید هدف گیری گروه مخاطب با تغییرات مورد نظر انجام شود. این را می توان در یک درخواست با استفاده از advertisers.lineItems.bulkEditAssignedTargetingOptions
انجام داد.
در اینجا نمونهای از نحوه بهروزرسانی هدفگیری مخاطبان برای هدفگیری مثبت مخاطبان Google آورده شده است:
جاوا
long advertiserId = advertiser-id; long lineItemId = line-item-id List<Long> addedGoogleAudienceIds = Arrays.asList(google-audience-id-to-add,...); // Build Google audience targeting settings objects to add to audience // targeting. ArrayList<GoogleAudienceTargetingSetting> newGoogleAudienceSettings = new ArrayList<GoogleAudienceTargetingSetting>(); // Convert list of Google Audience IDs into list of settings. for (Long googleAudienceId : addedGoogleAudienceIds) { newGoogleAudienceSettings.add(new GoogleAudienceTargetingSetting() .setGoogleAudienceId(googleAudienceId)); } // Create relevant bulk edit request objects. BulkEditLineItemAssignedTargetingOptionsRequest requestContent = new BulkEditLineItemAssignedTargetingOptionsRequest(); AudienceGroupAssignedTargetingOptionDetails updatedAudienceGroupDetails; ArrayList<DeleteAssignedTargetingOptionsRequest> audienceGroupDeleteRequests = new ArrayList<DeleteAssignedTargetingOptionsRequest>(); try { // Retrieve existing audience group targeting. AssignedTargetingOption existingAudienceGroupTargetingOption = service .advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .get( advertiserId, lineItemId, "TARGETING_TYPE_AUDIENCE_GROUP", "audienceGroup" ).execute(); // Extract existing audience group targeting details. updatedAudienceGroupDetails = existingAudienceGroupTargetingOption.getAudienceGroupDetails(); // Build and add delete request for existing audience group targeting. ArrayList<String> deleteAudienceGroupAssignedTargetingIds = new ArrayList<String>(); deleteAudienceGroupAssignedTargetingIds.add("audienceGroup"); audienceGroupDeleteRequests .add(new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptionIds( deleteAudienceGroupAssignedTargetingIds ) ); } catch (GoogleJsonResponseException e) { updatedAudienceGroupDetails = new AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. requestContent.setDeleteRequests(audienceGroupDeleteRequests); // Construct new group of Google Audiences to include in targeting. GoogleAudienceGroup updatedIncludedGoogleAudienceGroup = updatedAudienceGroupDetails.getIncludedGoogleAudienceGroup(); if (updatedIncludedGoogleAudienceGroup != null) { List<GoogleAudienceTargetingSetting> updatedGoogleAudienceSettings = updatedIncludedGoogleAudienceGroup.getSettings(); updatedGoogleAudienceSettings.addAll(newGoogleAudienceSettings); updatedIncludedGoogleAudienceGroup .setSettings(updatedGoogleAudienceSettings); } else { updatedIncludedGoogleAudienceGroup = new GoogleAudienceGroup(); updatedIncludedGoogleAudienceGroup.setSettings(newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. updatedAudienceGroupDetails .setIncludedGoogleAudienceGroup(updatedIncludedGoogleAudienceGroup); // Create new targeting option to assign. AssignedTargetingOption newAudienceGroupTargeting = new AssignedTargetingOption(); newAudienceGroupTargeting .setAudienceGroupDetails(updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of create // requests. ArrayList<AssignedTargetingOption> createAudienceGroupAssignedTargetingOptions = new ArrayList<AssignedTargetingOption>(); createAudienceGroupAssignedTargetingOptions.add(newAudienceGroupTargeting); ArrayList<CreateAssignedTargetingOptionsRequest> targetingCreateRequests = new ArrayList<CreateAssignedTargetingOptionsRequest>(); targetingCreateRequests.add(new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptions( createAudienceGroupAssignedTargetingOptions ) ); // Set create requests in edit request. requestContent.setCreateRequests(targetingCreateRequests); // Configure and execute the bulk list request. BulkEditLineItemAssignedTargetingOptionsResponse response = service.advertisers().lineItems() .bulkEditLineItemAssignedTargetingOptions( advertiserId, lineItemId, requestContent).execute();
پایتون
advertiser_id = advertiser-id line_item_id = line-item-id added_google_audiences = [google-audience-id-to-add,...] # Build Google audience targeting settings objects to create. new_google_audience_targeting_settings = [] for google_audience_id in added_google_audiences: new_google_audience_targeting_settings.append( {'googleAudienceId': google_audience_id} ) # Retrieve any existing line item audience targeting. retrieved_audience_targeting = service.advertisers().lineItems( ).targetingTypes().assignedTargetingOptions().get( advertiserId=advertiser_id, lineItemId=line_item_id, targetingType="TARGETING_TYPE_AUDIENCE_GROUP", assignedTargetingOptionId="audienceGroup" ).execute() updated_audience_group_details = {} # Copy over any existing audience targeting. if 'audienceGroupDetails' in retrieved_audience_targeting: updated_audience_group_details = retrieved_audience_targeting[ 'audienceGroupDetails'] # Append the new Google audience IDs to any existing positive Google # audience targeting. if 'includedGoogleAudienceGroup' in updated_audience_group_details: updated_audience_group_details[ 'includedGoogleAudienceGroup']['settings'].extend( new_google_audience_targeting_settings) else: updated_audience_group_details['includedGoogleAudienceGroup'] = { 'settings': new_google_audience_targeting_settings } # Build bulk edit request. bulk_edit_request = { 'deleteRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptionIds': [ "audienceGroup" ] } ], 'createRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptions': [ {'audienceGroupDetails': updated_audience_group_details} ] } ] } # Update the audience targeting updated_audience_targeting = service.advertisers().lineItems( ).bulkEditLineItemAssignedTargetingOptions( advertiserId=advertiser_id, lineItemId=line_item_id, body=bulk_edit_request ).execute()
PHP
$advertiserId = advertiser-id; $lineItemId = line-item-id; $addedGoogleAudienceIds = array(google-audience-id-to-add,...); // Convert list of Google Audience IDs into list of Google audience // settings. $newGoogleAudienceSettings = array(); foreach ($addedGoogleAudienceIds as $googleAudienceId) { $newSetting = new Google_Service_DisplayVideo_GoogleAudienceTargetingSetting(); $newSetting->setGoogleAudienceId($googleAudienceId); $newGoogleAudienceSettings[] = $newSetting; } // Create a bulk edit request. $requestBody = new Google_Service_DisplayVideo_BulkEditLineItemAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequests = array(); try { // Retrieve existing audience group targeting. $existingAudienceGroupTargetingOption = $this ->service ->advertisers_lineItems_targetingTypes_assignedTargetingOptions ->get( $advertiserId, $lineItemId, 'TARGETING_TYPE_AUDIENCE_GROUP', 'audienceGroup' ); // Extract existing audience group targeting details. $updatedAudienceGroupDetails = $existingAudienceGroupTargetingOption ->getAudienceGroupDetails(); // Build and add delete request for existing audience group // targeting. $deleteAudienceGroupAssignedTargetingIds = array(); $deleteAudienceGroupAssignedTargetingIds[] = "audienceGroup"; $audienceGroupDeleteRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequest ->setTargetingType('TARGETING_TYPE_AUDIENCE_GROUP'); $audienceGroupDeleteRequest ->setAssignedTargetingOptionIds( $deleteAudienceGroupAssignedTargetingIds ); $audienceGroupDeleteRequests[] = $audienceGroupDeleteRequest; } catch (\Exception $e) { $updatedAudienceGroupDetails = new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. $requestBody->setDeleteRequests($audienceGroupDeleteRequests); // Construct new group of Google audiences to include in targeting. $updatedIncludedGoogleAudienceGroup = $updatedAudienceGroupDetails ->getIncludedGoogleAudienceGroup(); if (!empty($updatedIncludedGoogleAudienceGroup)) { // Get existing settings. $updatedGoogleAudienceSettings = $updatedIncludedGoogleAudienceGroup->getSettings(); // Add new Google audiences to existing list. $updatedGoogleAudienceSettings = array_merge( $updatedGoogleAudienceSettings, $newGoogleAudienceSettings ); // Set updated Google audience list. $updatedIncludedGoogleAudienceGroup ->setSettings($updatedGoogleAudienceSettings); } else { // Create new Google audience group. $updatedIncludedGoogleAudienceGroup = new Google_Service_DisplayVideo_GoogleAudienceGroup(); // Set list of new Google audiences for targeting. $updatedIncludedGoogleAudienceGroup ->setSettings($newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. $updatedAudienceGroupDetails ->setIncludedGoogleAudienceGroup( $updatedIncludedGoogleAudienceGroup ); // Create new targeting option to assign. $newAudienceGroupTargeting = new Google_Service_DisplayVideo_AssignedTargetingOption(); $newAudienceGroupTargeting ->setAudienceGroupDetails($updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of // create requests. $createAudienceGroupAssignedTargetingOptions = array(); $createAudienceGroupAssignedTargetingOptions[] = $newAudienceGroupTargeting; $createAudienceGroupTargetingRequest = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createAudienceGroupTargetingRequest->setTargetingType( "TARGETING_TYPE_AUDIENCE_GROUP" ); $createAudienceGroupTargetingRequest->setAssignedTargetingOptions( $createAudienceGroupAssignedTargetingOptions ); $createRequests[] = $createAudienceGroupTargetingRequest; // Set create requests in edit request. $requestBody->setCreateRequests($createRequests); // Call the API, editing the assigned targeting options for the // identified line item. $response = $this ->service ->advertisers_lineItems ->bulkEditLineItemAssignedTargetingOptions( $advertiserId, $lineItemId, $requestBody );
برای منسوخ شدن گزینه های هدف گیری آماده باشید
گزینه های هدف ثابت نیستند و ممکن است تعداد کمی از آنها گاه به گاه منسوخ شود. گزینه های هدف، پس از منسوخ شدن، بر ارائه آگهی یک مورد خط تأثیری نمی گذارد. پس از منسوخ شدن، این گزینهها از آیتمهای خط موجود حذف میشوند و درخواستهایی که سعی در بازیابی یا اختصاص این گزینهها دارند منجر به خطا میشوند.
برای جلوگیری از این خطاها، توصیه می کنیم که به طور مرتب شناسه های گزینه هدف گذاری ذخیره شده را بررسی کنید. به منظور حفظ سهمیه، توصیه میکنیم شناسههایی که به طور منظم استفاده میشوند را در حافظه پنهان ذخیره کنید . با این حال، ذخیره شناسه ها به این معنی است که ممکن است متوجه نشوید که یک گزینه هدف منسوخ شده است. به همین دلیل، باید به طور مرتب از targetingOptions.targetingTypes.get
برای بازیابی همه شناسههای گزینه هدف ذخیره شده استفاده کنید تا تأیید کنید که هنوز توسط Display & Video 360 پشتیبانی میشوند.
برای جزئیات بیشتر در مورد منسوخ شدن های قابل توجه قبلی و آینده، صفحه لغو اعلام شده ما را ببینید.
برای بهروزرسانی یک مورد خطی، درخواستهای همزمان انجام ندهید
تلاش برای به روز رسانی تنظیمات یا هدف گذاری اختصاص داده شده برای یک مورد خط واحد با استفاده از چندین درخواست همزمان، یک خطا برمی گرداند. درخواست های قابل اجرا عبارتند از:
-
advertisers.lineItems.bulkEditAssignedTargetingOptions
-
advertisers.lineItems.bulkUpdate
-
advertisers.lineItems.patch
-
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
-
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
اگر لازم است چندین گزینه هدف گذاری اختصاص داده شده را برای یک مورد خطی به طور همزمان اضافه یا حذف کنید، باید از یک درخواست advertisers.lineItems.bulkEditAssignedTargetingOptions
استفاده کنید. اگر میخواهید تنظیمات و هدفگذاری یک مورد خطی را بهروزرسانی کنید، درخواست patch
یا bulkUpdate
و درخواست هدفیابی مربوطه را در صف قرار دهید تا مطمئن شوید درخواست دوم تا زمانی که درخواست اول پاسخی را ارسال نکند، ارسال نمیشود.