التجارب داخل الحملة

تُستخدَم التجارب داخل الحملة لاختبار ميزة معيّنة ضمن حملة واحدة. على عكس التجارب التي يديرها النظام والتي يتم فيها تقسيم عدد الزيارات بين الحملات الضابطة والتجريبية، تقسم التجارب داخل الحملة عدد الزيارات داخل الحملة، استنادًا إلى ما إذا كانت الميزة مفعّلة أم لا.

يتوافق سير العمل هذا مع قيم ExperimentType التالية:

  • ADOPT_AI_MAX
  • ADOPT_BROAD_MATCH_KEYWORDS

الإعداد

  1. حدِّد Experiment، مع توفير نوع تجربة وعنصر تحكّم ExperimentArm وعنصر معالجة ExperimentArm. يجب أن تشير كل مجموعة تجربة إلى الحملة نفسها.
  2. فعِّل ميزة الاختبار للتجربة باستخدام قناع حقل. ليس ذلك ضروريًا في ADOPT_BROAD_MATCH_KEYWORDS، بل سيتم تفعيل إعداد "حملة مطابقة واسعة" تلقائيًا عند إنشاء التجربة.
  3. أرسِل طلب GoogleAdsService.Mutate يتضمّن عمليات تغيير لإنشاء التجربة ومجموعات التجربة، ولتفعيل ميزة الاختبار (إذا كان ذلك منطبقًا).

بعد الإعداد، يتم تقسيم عدد الزيارات داخل الحملة بحيث يتم عرض الميزة المفعّلة (مجموعة التجربة) لـ% 50 من عدد الزيارات، وعدم عرضها لـ% 50 (مجموعة التحكّم).

جافا

This example is not yet available in Java; you can take a look at the other languages.
    

#C

This example is not yet available in C#; you can take a look at the other languages.
    

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

# Create the experiment resource name using a temporary ID.
experiment_resource_name = googleads_service.experiment_path(
    customer_id, "-1"
)

# Create the experiment.
experiment_operation = client.get_type("MutateOperation")
experiment = experiment_operation.experiment_operation.create
experiment.resource_name = experiment_resource_name
experiment.name = f"ADOPT_AI_MAX Experiment #{uuid4()}"
experiment.type_ = client.enums.ExperimentTypeEnum.ADOPT_AI_MAX
experiment.status = client.enums.ExperimentStatusEnum.SETUP

# Create the control arm. Both arms in an intra-campaign experiment
# reference the same base campaign.
control_arm_operation = client.get_type("MutateOperation")
control_arm = control_arm_operation.experiment_arm_operation.create
control_arm.experiment = experiment_resource_name
control_arm.name = "Control Arm"
control_arm.control = True
control_arm.traffic_split = 50
control_arm.campaigns.append(
    googleads_service.campaign_path(customer_id, campaign_id)
)

# Create the treatment arm.
treatment_arm_operation = client.get_type("MutateOperation")
treatment_arm = treatment_arm_operation.experiment_arm_operation.create
treatment_arm.experiment = experiment_resource_name
treatment_arm.name = "Treatment Arm"
treatment_arm.control = False
treatment_arm.traffic_split = 50
treatment_arm.campaigns.append(
    googleads_service.campaign_path(customer_id, campaign_id)
)

# Create a campaign operation with an update mask to enable AI Max and
# configure asset automation settings.
campaign_operation = client.get_type("MutateOperation")
campaign = campaign_operation.campaign_operation.update
campaign.resource_name = googleads_service.campaign_path(
    customer_id, campaign_id
)
campaign.ai_max_setting.enable_ai_max = True

for asset_automation_type_enum in [
    client.enums.AssetAutomationTypeEnum.TEXT_ASSET_AUTOMATION,
    client.enums.AssetAutomationTypeEnum.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION,
]:
    asset_automation_setting = client.get_type(
        "Campaign"
    ).AssetAutomationSetting()
    asset_automation_setting.asset_automation_type = (
        asset_automation_type_enum
    )
    asset_automation_setting.asset_automation_status = (
        client.enums.AssetAutomationStatusEnum.OPTED_IN
    )
    campaign.asset_automation_settings.append(asset_automation_setting)

client.copy_from(
    campaign_operation.campaign_operation.update_mask,
    protobuf_helpers.field_mask(None, campaign._pb),
)

# Send all mutate operations in a single Mutate request.
mutate_operations = [
    experiment_operation,
    control_arm_operation,
    treatment_arm_operation,
    campaign_operation,
]

response = googleads_service.mutate(
    customer_id=customer_id,
    mutate_operations=mutate_operations,
)
      

Ruby

This example is not yet available in Ruby; you can take a look at the other languages.
    

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

تقرير عن التجربة

بما أنّ الزيارات من المجموعة الضابطة والمجموعة التجريبية يتم دمجها ضمن حملة واحدة، عليك استخدام إعداد التقارير المباشر للتجربة لمقارنة المقاييس بين المجموعة الضابطة والمجموعة التجريبية. لا تعرض التقارير العادية على مستوى الحملة سوى المقاييس المجمّعة للحملة بأكملها، ولا يمكنها التمييز بين المجموعتين.

يمكن استخدام طلب البحث التالي بلغة GAQL لاسترداد إحصاءات النقرات الخاصة ADOPT_AI_MAX بتجربة داخل الحملة.

SELECT
  experiment.resource_name,
  experiment.name,
  metrics.clicks,
  metrics.control_clicks,
  metrics.clicks_point_estimate,
  metrics.clicks_p_value
FROM experiment
WHERE experiment.type = 'ADOPT_AI_MAX'

تطبيق التجربة أو إنهاؤها

بعد تقييم النتائج، يمكنك إنهاء التجربة أو الترويج لها باستخدام ExperimentService.

  • إنهاء: إذا لم تكن راضيًا عن النتائج، استخدِم EndExperiment. سيتم إيقاف الميزة، وستعود الحملة إلى عرض الإعلانات لكل الزيارات بدون الميزة التجريبية. هذه عملية متزامنة.
  • الترويج: إذا كنت راضيًا عن النتائج، استخدِم PromoteExperiment. يؤدي ذلك إلى تطبيق التغيير التجريبي كالحالة الدائمة الجديدة للحملة. هذه عملية غير متزامنة، راجِع الأخطاء غير المتزامنة لمعرفة التفاصيل.

لا تتوفّر عملية تطبيق التغييرات للتجارب داخل الحملة لأنّه لا توجد حملة تجريبية منفصلة يمكن تطبيق التغييرات عليها.