共用方式為


回應式搜尋廣告軟體代碼範例

此範例示範如何為搜尋廣告行銷活動設定回應式搜尋廣告。

提示

使用檔標頭中的語言選取器來選擇 C#、JAVA、Php 或 Python。

若要取得 Microsoft Advertising 使用者的存取和重新整理權杖,並使用 Bing 廣告 API 進行您的第一個服務呼叫,請參閱 快速入門 指南。 您會想要檢閱入門指南和慣用語言的逐步解說,例如 C#JAVAPhpPython

GitHub 提供 C#JAVAPhpPython 範例的支援檔案。 您可以視需要複製每個存放庫或重新規劃程式碼片段。

using System;
using System.Linq;
using System.ServiceModel;
using System.Threading.Tasks;
using Microsoft.BingAds.V13.CampaignManagement;
using Microsoft.BingAds;

namespace BingAdsExamplesLibrary.V13
{
    /// <summary>
    /// How to add responsive search ads in a new ad group.
    /// </summary>
    public class ResponsiveSearchAds : ExampleBase
    {
        public override string Description
        {
            get { return "Responsive Search Ads | Campaign Management V13"; }
        }

        public async override Task RunAsync(AuthorizationData authorizationData)
        {
            try
            {
                ApiEnvironment environment = ((OAuthDesktopMobileAuthCodeGrant)authorizationData.Authentication).Environment;

                CampaignManagementExampleHelper CampaignManagementExampleHelper = new CampaignManagementExampleHelper(
                    OutputStatusMessageDefault: this.OutputStatusMessage);
                CampaignManagementExampleHelper.CampaignManagementService = new ServiceClient<ICampaignManagementService>(
                    authorizationData: authorizationData,
                    environment: environment);

                // Create a Search campaign with one ad group and a responsive search ad.

                var campaigns = new[]{
                    new Campaign
                    {
                        Name = "Everyone's Shoes " + DateTime.UtcNow,                      
                        BudgetId = null,
                        DailyBudget = 50,
                        BudgetType = BudgetLimitType.DailyBudgetStandard,
                        Languages = new string[] { "All"},
                        TimeZone = "PacificTimeUSCanadaTijuana",
                    },
                };

                OutputStatusMessage("-----\nAddCampaigns:");
                AddCampaignsResponse addCampaignsResponse = await CampaignManagementExampleHelper.AddCampaignsAsync(
                    accountId: authorizationData.AccountId,
                    campaigns: campaigns);
                long?[] campaignIds = addCampaignsResponse.CampaignIds.ToArray();
                BatchError[] campaignErrors = addCampaignsResponse.PartialErrors.ToArray();
                OutputStatusMessage("CampaignIds:");
                CampaignManagementExampleHelper.OutputArrayOfLong(campaignIds);
                OutputStatusMessage("PartialErrors:");
                CampaignManagementExampleHelper.OutputArrayOfBatchError(campaignErrors);

                // Add an ad group within the campaign.

                var adGroups = new[] {
                    new AdGroup
                    {
                        Name = "Everyone's Red Shoe Sale",
                        StartDate = null,
                        EndDate = new Date {
                            Month = 12,
                            Day = 31,
                            Year = DateTime.UtcNow.Year + 1
                        },
                        CpcBid = new Bid { Amount = 0.09 },
                    }
                };

                OutputStatusMessage("-----\nAddAdGroups:");
                AddAdGroupsResponse addAdGroupsResponse = await CampaignManagementExampleHelper.AddAdGroupsAsync(
                    campaignId: (long)campaignIds[0],
                    adGroups: adGroups,
                    returnInheritedBidStrategyTypes: false);
                long?[] adGroupIds = addAdGroupsResponse.AdGroupIds.ToArray();
                BatchError[] adGroupErrors = addAdGroupsResponse.PartialErrors.ToArray();
                OutputStatusMessage("AdGroupIds:");
                CampaignManagementExampleHelper.OutputArrayOfLong(adGroupIds);
                OutputStatusMessage("PartialErrors:");
                CampaignManagementExampleHelper.OutputArrayOfBatchError(adGroupErrors);

                // Add keywords and ads within the ad group.

                var keywords = new[] {
                    new Keyword
                    {
                        Bid = new Bid { Amount = 0.47 },
                        Param2 = "10% Off",
                        MatchType = MatchType.Phrase,
                        Text = "Brand-A Shoes",
                    },
                };

                OutputStatusMessage("-----\nAddKeywords:");
                AddKeywordsResponse addKeywordsResponse = await CampaignManagementExampleHelper.AddKeywordsAsync(
                    adGroupId: (long)adGroupIds[0], 
                    keywords: keywords,
                    returnInheritedBidStrategyTypes: false);
                long?[] keywordIds = addKeywordsResponse.KeywordIds.ToArray();
                BatchError[] keywordErrors = addKeywordsResponse.PartialErrors.ToArray();
                OutputStatusMessage("KeywordIds:");
                CampaignManagementExampleHelper.OutputArrayOfLong(keywordIds);
                OutputStatusMessage("PartialErrors:");
                CampaignManagementExampleHelper.OutputArrayOfBatchError(keywordErrors);

                // The responsive search ad descriptions and headlines are stored as text assets. 
                // You must set between 2-4 descriptions and 3-15 headlines.

                var ads = new Ad[] {
                    new ResponsiveSearchAd
                    {
                        Descriptions = new AssetLink []
                        {
                            new AssetLink
                            {
                                Asset = new TextAsset
                                {
                                    Text = "Find New Customers & Increase Sales!"
                                },
                                PinnedField = "Description1"
                            },
                            new AssetLink
                            {
                                Asset = new TextAsset
                                {
                                    Text = "Start Advertising on Contoso Today."
                                },
                                PinnedField = "Description2"
                            },
                        },
                        Headlines = new AssetLink []
                        {
                            new AssetLink
                            {
                                Asset = new TextAsset
                                {
                                    Text = "Contoso"
                                },
                                PinnedField = "Headline1"
                            },
                            new AssetLink
                            {
                                Asset = new TextAsset
                                {
                                    Text = "Quick & Easy Setup"
                                },
                                PinnedField = null
                            },
                            new AssetLink
                            {
                                Asset = new TextAsset
                                {
                                    Text = "Seemless Integration"
                                },
                                PinnedField = null
                            },
                        },
                        Path1 = "seattle",
                        Path2 = "shoe sale", 
                        FinalUrls = new[] {
                            "https://www.contoso.com/womenshoesale"
                        },
                    },                    
                };
                                
                OutputStatusMessage("-----\nAddAds:");
                AddAdsResponse addAdsResponse = await CampaignManagementExampleHelper.AddAdsAsync(
                    adGroupId: (long)adGroupIds[0], 
                    ads: ads);
                long?[] adIds = addAdsResponse.AdIds.ToArray();
                BatchError[] adErrors = addAdsResponse.PartialErrors.ToArray();
                OutputStatusMessage("AdIds:");
                CampaignManagementExampleHelper.OutputArrayOfLong(adIds);
                OutputStatusMessage("PartialErrors:");
                CampaignManagementExampleHelper.OutputArrayOfBatchError(adErrors);
                
                // Delete the campaign and everything it contains e.g., ad groups and ads.

                OutputStatusMessage("-----\nDeleteCampaigns:");
                await CampaignManagementExampleHelper.DeleteCampaignsAsync(
                    accountId: authorizationData.AccountId,
                    campaignIds: new[] { (long)campaignIds[0] });
                OutputStatusMessage(string.Format("Deleted Campaign Id {0}", campaignIds[0]));
            }
            // Catch authentication exceptions
            catch (OAuthTokenRequestException ex)
            {
                OutputStatusMessage(string.Format("Couldn't get OAuth tokens. Error: {0}. Description: {1}", ex.Details.Error, ex.Details.Description));
            }
            // Catch Campaign Management service exceptions
            catch (FaultException<Microsoft.BingAds.V13.CampaignManagement.AdApiFaultDetail> ex)
            {
                OutputStatusMessage(string.Join("; ", ex.Detail.Errors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
            }
            catch (FaultException<Microsoft.BingAds.V13.CampaignManagement.ApiFaultDetail> ex)
            {
                OutputStatusMessage(string.Join("; ", ex.Detail.OperationErrors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
                OutputStatusMessage(string.Join("; ", ex.Detail.BatchErrors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
            }
            catch (FaultException<Microsoft.BingAds.V13.CampaignManagement.EditorialApiFaultDetail> ex)
            {
                OutputStatusMessage(string.Join("; ", ex.Detail.OperationErrors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
                OutputStatusMessage(string.Join("; ", ex.Detail.BatchErrors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
            }
            catch (Exception ex)
            {
                OutputStatusMessage(ex.Message);
            }
        }
    }
}
package com.microsoft.bingads.examples.v13;

import java.util.Calendar;

import com.microsoft.bingads.*;
import com.microsoft.bingads.v13.campaignmanagement.*;

public class ResponsiveSearchAds extends ExampleBase {
    
    public static void main(java.lang.String[] args) {
     
        try
        {
            authorizationData = getAuthorizationData(); 
             
            CampaignManagementExampleHelper.CampaignManagementService = new ServiceClient<ICampaignManagementService>(
                        authorizationData, 
                        API_ENVIRONMENT,
                        ICampaignManagementService.class);
            
            // Create a Search campaign with one ad group and a responsive search ad.

            ArrayOfCampaign campaigns = new ArrayOfCampaign();
            Campaign campaign = new Campaign();
            campaign.setBudgetType(BudgetLimitType.DAILY_BUDGET_STANDARD);
            campaign.setDailyBudget(50.00);
            ArrayOfstring languages = new ArrayOfstring();
            languages.getStrings().add("All");
            campaign.setLanguages(languages);
            campaign.setName("Everyone's Shoes " + System.currentTimeMillis());
            campaign.setTimeZone("PacificTimeUSCanadaTijuana");
            campaigns.getCampaigns().add(campaign);

            outputStatusMessage("-----\nAddCampaigns:");
            AddCampaignsResponse addCampaignsResponse = CampaignManagementExampleHelper.addCampaigns(
                    authorizationData.getAccountId(), 
                    campaigns);            
            ArrayOfNullableOflong campaignIds = addCampaignsResponse.getCampaignIds();
            ArrayOfBatchError campaignErrors = addCampaignsResponse.getPartialErrors();
            outputStatusMessage("CampaignIds:");
            CampaignManagementExampleHelper.outputArrayOfNullableOflong(campaignIds);
            outputStatusMessage("PartialErrors:");
            CampaignManagementExampleHelper.outputArrayOfBatchError(campaignErrors);

            // Add an ad group within the campaign.
            
            ArrayOfAdGroup adGroups = new ArrayOfAdGroup();
            AdGroup adGroup = new AdGroup();
            adGroup.setName("Everyone's Red Shoe Sale");
            adGroup.setStartDate(null);
            Calendar calendar = Calendar.getInstance();
            adGroup.setEndDate(new com.microsoft.bingads.v13.campaignmanagement.Date());
            adGroup.getEndDate().setDay(31);
            adGroup.getEndDate().setMonth(12);
            adGroup.getEndDate().setYear(calendar.get(Calendar.YEAR));
            Bid CpcBid = new Bid();
            CpcBid.setAmount(0.09);
            adGroup.setCpcBid(CpcBid);
            adGroups.getAdGroups().add(adGroup);

            outputStatusMessage("-----\nAddAdGroups:");
            AddAdGroupsResponse addAdGroupsResponse = CampaignManagementExampleHelper.addAdGroups(
                    campaignIds.getLongs().get(0), 
                    adGroups, 
                    false);
            ArrayOfNullableOflong adGroupIds = addAdGroupsResponse.getAdGroupIds();
            ArrayOfBatchError adGroupErrors = addAdGroupsResponse.getPartialErrors();
            outputStatusMessage("AdGroupIds:");
            CampaignManagementExampleHelper.outputArrayOfNullableOflong(adGroupIds);
            outputStatusMessage("PartialErrors:");
            CampaignManagementExampleHelper.outputArrayOfBatchError(adGroupErrors); 

            // Add keywords and ads within the ad group.
            
            ArrayOfKeyword keywords = new ArrayOfKeyword();
            Keyword keyword = new Keyword();
            keyword.setBid(new Bid());
            keyword.getBid().setAmount(0.47);
            keyword.setParam2("10% Off");
            keyword.setMatchType(MatchType.PHRASE);
            keyword.setText("Brand-A Shoes");
            keywords.getKeywords().add(keyword);

            outputStatusMessage("-----\nAddKeywords:");
            AddKeywordsResponse addKeywordsResponse = CampaignManagementExampleHelper.addKeywords(
                    adGroupIds.getLongs().get(0), 
                    keywords, 
                    false);
            ArrayOfNullableOflong keywordIds = addKeywordsResponse.getKeywordIds();
            ArrayOfBatchError keywordErrors = addKeywordsResponse.getPartialErrors();
            outputStatusMessage("KeywordIds:");
            CampaignManagementExampleHelper.outputArrayOfNullableOflong(keywordIds);
            outputStatusMessage("PartialErrors:");
            CampaignManagementExampleHelper.outputArrayOfBatchError(keywordErrors);

            // The responsive search ad descriptions and headlines are stored as text assets. 
            // You must set between 2-4 descriptions and 3-15 headlines.
            
            ArrayOfAd ads = new ArrayOfAd();
            ResponsiveSearchAd responsiveSearchAd = new ResponsiveSearchAd();            
            ArrayOfAssetLink descriptionAssetLinks = new ArrayOfAssetLink();
            AssetLink descriptionAssetLinkA = new AssetLink();
            TextAsset descriptionTextAssetA = new TextAsset();
            descriptionTextAssetA.setText("Find New Customers & Increase Sales!");
            descriptionAssetLinkA.setAsset(descriptionTextAssetA);
            descriptionAssetLinkA.setPinnedField("Description1");
            descriptionAssetLinks.getAssetLinks().add(descriptionAssetLinkA);
            AssetLink descriptionAssetLinkB = new AssetLink();
            TextAsset descriptionTextAssetB = new TextAsset();
            descriptionTextAssetB.setText("Start Advertising on Contoso Today.");
            descriptionAssetLinkB.setAsset(descriptionTextAssetB);
            descriptionAssetLinkB.setPinnedField("Description2");
            descriptionAssetLinks.getAssetLinks().add(descriptionAssetLinkB);
            responsiveSearchAd.setDescriptions(descriptionAssetLinks);
            ArrayOfAssetLink headlineAssetLinks = new ArrayOfAssetLink();
            AssetLink headlineAssetLinkA = new AssetLink();
            TextAsset headlineTextAssetA = new TextAsset();
            headlineTextAssetA.setText("Contoso");
            headlineAssetLinkA.setAsset(headlineTextAssetA);
            headlineAssetLinkA.setPinnedField("Headline1");
            headlineAssetLinks.getAssetLinks().add(headlineAssetLinkA);
            AssetLink headlineAssetLinkB = new AssetLink();
            TextAsset headlineTextAssetB = new TextAsset();
            headlineTextAssetB.setText("Quick & Easy Setup");
            headlineAssetLinkB.setAsset(headlineTextAssetB);
            headlineAssetLinkB.setPinnedField(null);
            headlineAssetLinks.getAssetLinks().add(headlineAssetLinkB);
            AssetLink headlineAssetLinkC = new AssetLink();
            TextAsset headlineTextAssetC = new TextAsset();
            headlineTextAssetC.setText("Seemless Integration");
            headlineAssetLinkC.setAsset(headlineTextAssetC);
            headlineAssetLinkC.setPinnedField(null);
            headlineAssetLinks.getAssetLinks().add(headlineAssetLinkC);
            responsiveSearchAd.setHeadlines(headlineAssetLinks);
            responsiveSearchAd.setPath1("seattle");
            responsiveSearchAd.setPath2("shoe sale");
            com.microsoft.bingads.v13.campaignmanagement.ArrayOfstring finalUrls = new com.microsoft.bingads.v13.campaignmanagement.ArrayOfstring();
            finalUrls.getStrings().add("https://www.contoso.com/womenshoesale");
            responsiveSearchAd.setFinalUrls(finalUrls);
            ads.getAds().add(responsiveSearchAd);

            outputStatusMessage("-----\nAddAds:");
            AddAdsResponse addAdsResponse = CampaignManagementExampleHelper.addAds(
                    adGroupIds.getLongs().get(0), 
                    ads);
            ArrayOfNullableOflong adIds = addAdsResponse.getAdIds();
            ArrayOfBatchError adErrors = addAdsResponse.getPartialErrors();
            outputStatusMessage("AdIds:");
            CampaignManagementExampleHelper.outputArrayOfNullableOflong(adIds);
            outputStatusMessage("PartialErrors:");
            CampaignManagementExampleHelper.outputArrayOfBatchError(adErrors);

            // Delete the campaign and everything it contains e.g., ad groups and ads.

            outputStatusMessage("-----\nDeleteCampaigns:");
            ArrayOflong deleteCampaignIds = new ArrayOflong();
            deleteCampaignIds.getLongs().add(campaignIds.getLongs().get(0));
            CampaignManagementExampleHelper.deleteCampaigns(
                    authorizationData.getAccountId(), 
                    deleteCampaignIds);
            outputStatusMessage(String.format("Deleted CampaignId %d", deleteCampaignIds.getLongs().get(0))); 
        } 
        catch (Exception ex) {
            String faultXml = ExampleExceptionHelper.getBingAdsExceptionFaultXml(ex, System.out);
            outputStatusMessage(faultXml);
            String message = ExampleExceptionHelper.handleBingAdsSDKException(ex, System.out);
            outputStatusMessage(message);
        }
    }    
 }
<?php

namespace Microsoft\BingAds\Samples\V13;

// For more information about installing and using the Bing Ads PHP SDK, 
// see https://go.microsoft.com/fwlink/?linkid=838593.

require_once __DIR__ . "/../vendor/autoload.php";

include __DIR__ . "/AuthHelper.php";
include __DIR__ . "/CampaignManagementExampleHelper.php";

use SoapVar;
use SoapFault;
use Exception;

//Specify the Microsoft\BingAds\V13\CampaignManagement classes that will be used.
use Microsoft\BingAds\V13\CampaignManagement\Campaign;
use Microsoft\BingAds\V13\CampaignManagement\AdGroup;
use Microsoft\BingAds\V13\CampaignManagement\Keyword;
use Microsoft\BingAds\V13\CampaignManagement\Ad;
use Microsoft\BingAds\V13\CampaignManagement\AdType;
use Microsoft\BingAds\V13\CampaignManagement\ResponsiveSearchAd;
use Microsoft\BingAds\V13\CampaignManagement\AssetLink;
use Microsoft\BingAds\V13\CampaignManagement\ImageAsset;
use Microsoft\BingAds\V13\CampaignManagement\Bid;
use Microsoft\BingAds\V13\CampaignManagement\MatchType;
use Microsoft\BingAds\V13\CampaignManagement\BudgetLimitType;
use Microsoft\BingAds\V13\CampaignManagement\Date;

// Specify the Microsoft\BingAds\Auth classes that will be used.
use Microsoft\BingAds\Auth\ServiceClient;
use Microsoft\BingAds\Auth\ServiceClientType;

// Specify the Microsoft\BingAds\Samples classes that will be used.
use Microsoft\BingAds\Samples\V13\AuthHelper;
use Microsoft\BingAds\Samples\V13\CampaignManagementExampleHelper;
    
try
{
    // Authenticate user credentials and set the account ID for the sample.  
    AuthHelper::Authenticate();
                
    // Create a Search campaign with one ad group and a responsive search ad.
    
    $campaigns = array();   
    $campaign = new Campaign();
    $campaign->Name = "Women's Shoes " . $_SERVER['REQUEST_TIME'];
    $campaign->BudgetType = BudgetLimitType::DailyBudgetStandard;
    $campaign->DailyBudget = 50.00;
    $campaign->Languages = array("All");
    $campaign->TimeZone = "PacificTimeUSCanadaTijuana";
    $campaigns[] = $campaign;
    
    print("-----\r\nAddCampaigns:\r\n");
    $addCampaignsResponse = CampaignManagementExampleHelper::AddCampaigns(
        $GLOBALS['AuthorizationData']->AccountId, 
        $campaigns
    );
    $campaignIds = $addCampaignsResponse->CampaignIds;
    print("CampaignIds:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfLong($campaignIds);
    print("PartialErrors:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfBatchError($addCampaignsResponse->PartialErrors);
    
    // Add an ad group within the campaign.

    $adGroups = array();
    $adGroup = new AdGroup();
    $adGroup->CpcBid = new Bid();
    $adGroup->CpcBid->Amount = 0.09;
    date_default_timezone_set('UTC');
    $endDate = new Date();
    $endDate->Day = 31;
    $endDate->Month = 12;
    $endDate->Year = date("Y");
    $adGroup->EndDate = $endDate;
    $adGroup->Name = "Women's Red Shoe Sale";    
    $adGroup->StartDate = null;    
    $adGroups[] = $adGroup;
 
    print("-----\r\nAddAdGroups:\r\n");
    $addAdGroupsResponse = CampaignManagementExampleHelper::AddAdGroups(
        $campaignIds->long[0], 
        $adGroups,
        null
    );
    $adGroupIds = $addAdGroupsResponse->AdGroupIds;
    print("AdGroupIds:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfLong($adGroupIds);
    print("PartialErrors:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfBatchError($addAdGroupsResponse->PartialErrors);
    
    // Add keywords and ads within the ad group.

    $keywords = array();
    $keyword = new Keyword();
    $keyword->Bid = new Bid();
    $keyword->Bid->Amount = 0.47;
    $keyword->Param2 = "10% Off";
    $keyword->MatchType = MatchType::Broad;
    $keyword->Text = "Brand-A Shoes";
    $keywords[] = $keyword;

    print("-----\r\nAddKeywords:\r\n");
    $addKeywordsResponse = CampaignManagementExampleHelper::AddKeywords(
        $adGroupIds->long[0], 
        $keywords,
        null
    );
    print("KeywordIds:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfLong($addKeywordsResponse->KeywordIds);
    print("PartialErrors:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfBatchError($addKeywordsResponse->PartialErrors);

    // The responsive search ad descriptions and headlines are stored as text assets. 
    // You must set between 2-4 descriptions and 3-15 headlines.
    
    $ads = array();
    $responsiveSearchAd = new ResponsiveSearchAd();
    $descriptionAssetLinks = array();
    $descriptionAssetLinkA = new AssetLink();
    $descriptionTextAssetA = new ImageAsset();
    $descriptionTextAssetA->Text = "Find New Customers & Increase Sales!";
    $descriptionAssetLinkA->Asset = new SoapVar(
        $descriptionTextAssetA, 
        SOAP_ENC_OBJECT, 
        'TextAsset', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );
    $descriptionAssetLinkA->PinnedField = "Description1";
    $descriptionAssetLinks[] = $descriptionAssetLinkA;
    $descriptionAssetLinkB = new AssetLink();
    $descriptionTextAssetB = new ImageAsset();
    $descriptionTextAssetB->Text = "Start Advertising on Contoso Today.";
    $descriptionAssetLinkB->Asset = new SoapVar(
        $descriptionTextAssetB, 
        SOAP_ENC_OBJECT, 
        'TextAsset', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );
    $descriptionAssetLinkB->PinnedField = "Description2";
    $descriptionAssetLinks[] = $descriptionAssetLinkB;
    $responsiveSearchAd->Descriptions = $descriptionAssetLinks;
    $headlineAssetLinks = array();
    $headlineAssetLinkA = new AssetLink();
    $headlineTextAssetA = new ImageAsset();
    $headlineTextAssetA->Text = "Contoso";
    $headlineAssetLinkA->Asset = new SoapVar(
        $headlineTextAssetA, 
        SOAP_ENC_OBJECT, 
        'TextAsset', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );
    $headlineAssetLinkA->PinnedField = "Headline1";
    $headlineAssetLinks[] = $headlineAssetLinkA;
    $headlineAssetLinkB = new AssetLink();
    $headlineTextAssetB = new ImageAsset();
    $headlineTextAssetB->Text = "Quick & Easy Setup";
    $headlineAssetLinkB->Asset = new SoapVar(
        $headlineTextAssetB, 
        SOAP_ENC_OBJECT, 
        'TextAsset', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );
    $headlineAssetLinkB->PinnedField = null;
    $headlineAssetLinks[] = $headlineAssetLinkB;
    $headlineAssetLinkC = new AssetLink();
    $headlineTextAssetC = new ImageAsset();
    $headlineTextAssetC->Text = "Seemless Integration";
    $headlineAssetLinkC->Asset = new SoapVar(
        $headlineTextAssetC, 
        SOAP_ENC_OBJECT, 
        'TextAsset', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );
    $headlineAssetLinkC->PinnedField = null;
    $headlineAssetLinks[] = $headlineAssetLinkC;
    $responsiveSearchAd->Headlines = $headlineAssetLinks;
    $responsiveSearchAd->Path1 = "seattle";
    $responsiveSearchAd->Path2 = "shoe sale";
    $responsiveSearchAd->FinalUrls = array("http://www.contoso.com/womenshoesale");
    $ads[] = new SoapVar(
        $responsiveSearchAd, 
        SOAP_ENC_OBJECT, 
        'ResponsiveSearchAd', 
        $GLOBALS['CampaignManagementProxy']->GetNamespace()
    );

    print("-----\r\nAddAds:\r\n");
    $addAdsResponse = CampaignManagementExampleHelper::AddAds(
        $adGroupIds->long[0], 
        $ads
    );
    print("AdIds:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfLong($addAdsResponse->AdIds);
    print("PartialErrors:\r\n");
    CampaignManagementExampleHelper::OutputArrayOfBatchError($addAdsResponse->PartialErrors);

    // Delete the campaign and everything it contains e.g., ad groups and ads.

    print("-----\r\nDeleteCampaigns:\r\n");
    CampaignManagementExampleHelper::DeleteCampaigns(
        $GLOBALS['AuthorizationData']->AccountId, 
        array($campaignIds->long[0])
    );
    printf("Deleted Campaign Id %s\r\n", $campaignIds->long[0]);
}
catch (SoapFault $e)
{
    printf("-----\r\nFault Code: %s\r\nFault String: %s\r\nFault Detail: \r\n", $e->faultcode, $e->faultstring);
    var_dump($e->detail);
    print "-----\r\nLast SOAP request/response:\r\n";
    print $GLOBALS['Proxy']->GetWsdl() . "\r\n";
    print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\r\n";
    print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\r\n";
}
catch (Exception $e)
{
    // Ignore fault exceptions that we already caught.
    if ($e->getPrevious())
    { ; }
    else
    {
        print $e->getCode()." ".$e->getMessage()."\n\n";
        print $e->getTraceAsString()."\n\n";
    }
}
from auth_helper import *
from campaignmanagement_example_helper import *

# You must provide credentials in auth_helper.py.

def main(authorization_data):

    try:
        # Create a Search campaign with one ad group and a responsive search ad.
                
        campaigns=campaign_service.factory.create('ArrayOfCampaign')
        campaign=set_elements_to_none(campaign_service.factory.create('Campaign'))
        campaign.BudgetType='DailyBudgetStandard'
        campaign.DailyBudget=50
        languages=campaign_service.factory.create('ns3:ArrayOfstring')
        languages.string.append('All')
        campaign.Languages=languages
        campaign.Name="Women's Shoes " + strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
        campaign.TimeZone='PacificTimeUSCanadaTijuana'
        campaigns.Campaign.append(campaign)

        output_status_message("-----\nAddCampaigns:")
        add_campaigns_response=campaign_service.AddCampaigns(
            AccountId=authorization_data.account_id,
            Campaigns=campaigns
        )
        campaign_ids={
            'long': add_campaigns_response.CampaignIds['long'] if add_campaigns_response.CampaignIds['long'] else None
        }
        output_status_message("CampaignIds:")
        output_array_of_long(campaign_ids)
        output_status_message("PartialErrors:")
        output_array_of_batcherror(add_campaigns_response.PartialErrors)
        
        # Add an ad group within the campaign.

        ad_groups=campaign_service.factory.create('ArrayOfAdGroup')
        ad_group=set_elements_to_none(campaign_service.factory.create('AdGroup'))
        ad_group.Name="Women's Red Shoe Sale"
        end_date=campaign_service.factory.create('Date')
        end_date.Day=31
        end_date.Month=12
        current_time=gmtime()
        end_date.Year=current_time.tm_year + 1
        ad_group.EndDate=end_date
        cpc_bid=campaign_service.factory.create('Bid')
        cpc_bid.Amount=0.09
        ad_group.CpcBid=cpc_bid
        ad_groups.AdGroup.append(ad_group)

        output_status_message("-----\nAddAdGroups:")
        add_ad_groups_response=campaign_service.AddAdGroups(
            CampaignId=campaign_ids['long'][0],
            AdGroups=ad_groups,
            ReturnInheritedBidStrategyTypes=False
        )
        ad_group_ids={
            'long': add_ad_groups_response.AdGroupIds['long'] if add_ad_groups_response.AdGroupIds['long'] else None
        }
        output_status_message("AdGroupIds:")
        output_array_of_long(ad_group_ids)
        output_status_message("PartialErrors:")
        output_array_of_batcherror(add_ad_groups_response.PartialErrors)

        # Add keywords and ads within the ad group.
        
        keywords=campaign_service.factory.create('ArrayOfKeyword')
        keyword=set_elements_to_none(campaign_service.factory.create('Keyword'))
        keyword.Bid=campaign_service.factory.create('Bid')
        keyword.Bid.Amount=0.47
        keyword.Param2='10% Off'
        keyword.MatchType='Broad'
        keyword.Text='Brand-A Shoes'
        keywords.Keyword.append(keyword)

        output_status_message("-----\nAddKeywords:")
        add_keywords_response=campaign_service.AddKeywords(
            AdGroupId=ad_group_ids['long'][0],
            Keywords=keywords,
            ReturnInheritedBidStrategyTypes=False
        )
        keyword_ids={
            'long': add_keywords_response.KeywordIds['long'] if add_keywords_response.KeywordIds else None
        }
        output_status_message("KeywordIds:")
        output_array_of_long(keyword_ids)
        output_status_message("PartialErrors:")
        output_array_of_batcherror(add_keywords_response.PartialErrors)

        # The responsive search ad descriptions and headlines are stored as text assets. 
        # You must set between 2-4 descriptions and 3-15 headlines.
        
        ads=campaign_service.factory.create('ArrayOfAd')
        responsive_search_ad=set_elements_to_none(campaign_service.factory.create('ResponsiveSearchAd'))
        description_asset_links=campaign_service.factory.create('ArrayOfAssetLink')
        description_asset_link_a=set_elements_to_none(campaign_service.factory.create('AssetLink'))
        description_text_asset_a=set_elements_to_none(campaign_service.factory.create('TextAsset'))
        description_text_asset_a.Text="Find New Customers & Increase Sales!"
        description_asset_link_a.Asset=description_text_asset_a
        description_asset_link_a.PinnedField="Description1"
        description_asset_links.AssetLink.append(description_asset_link_a)
        description_asset_link_b=set_elements_to_none(campaign_service.factory.create('AssetLink'))
        description_text_asset_b=set_elements_to_none(campaign_service.factory.create('TextAsset'))
        description_text_asset_b.Text="Start Advertising on Contoso Today."
        description_asset_link_b.Asset=description_text_asset_b
        description_asset_link_b.PinnedField="Description2"
        description_asset_links.AssetLink.append(description_asset_link_b)
        responsive_search_ad.Descriptions=description_asset_links
        headline_asset_links=campaign_service.factory.create('ArrayOfAssetLink')
        headline_asset_link_a=set_elements_to_none(campaign_service.factory.create('AssetLink'))
        headline_text_asset_a=set_elements_to_none(campaign_service.factory.create('TextAsset'))
        headline_text_asset_a.Text="Contoso"
        headline_asset_link_a.Asset=headline_text_asset_a
        headline_asset_link_a.PinnedField="Headline1"
        headline_asset_links.AssetLink.append(headline_asset_link_a)
        headline_asset_link_b=set_elements_to_none(campaign_service.factory.create('AssetLink'))
        headline_text_asset_b=set_elements_to_none(campaign_service.factory.create('TextAsset'))
        headline_text_asset_b.Text="Quick & Easy Setup"
        headline_asset_link_b.Asset=headline_text_asset_b
        headline_asset_link_b.PinnedField=None
        headline_asset_links.AssetLink.append(headline_asset_link_b)
        headline_asset_link_c=set_elements_to_none(campaign_service.factory.create('AssetLink'))
        headline_text_asset_c=set_elements_to_none(campaign_service.factory.create('TextAsset'))
        headline_text_asset_c.Text="Seemless Integration"
        headline_asset_link_c.Asset=headline_text_asset_c
        headline_asset_link_c.PinnedField=None
        headline_asset_links.AssetLink.append(headline_asset_link_c)
        responsive_search_ad.Headlines=headline_asset_links
        responsive_search_ad.Path1='seattle'
        responsive_search_ad.Path2='shoe sale'
        responsive_search_ad.Type='ResponsiveSearch'
        final_urls=campaign_service.factory.create('ns3:ArrayOfstring')
        final_urls.string.append('https://www.contoso.com/womenshoesale')
        responsive_search_ad.FinalUrls=final_urls
        ads.Ad.append(responsive_search_ad)
        
        output_status_message("-----\nAddAds:")
        add_ads_response=campaign_service.AddAds(
            AdGroupId=ad_group_ids['long'][0],
            Ads=ads
        )
        ad_ids={
            'long': add_ads_response.AdIds['long'] if add_ads_response.AdIds['long'] else None
        }
        output_status_message("AdIds:")
        output_array_of_long(ad_ids)
        output_status_message("PartialErrors:")
        output_array_of_batcherror(add_ads_response.PartialErrors)
        
        # Delete the campaign and everything it contains e.g., ad groups and ads.

        output_status_message("-----\nDeleteCampaigns:")
        campaign_service.DeleteCampaigns(
            AccountId=authorization_data.account_id,
            CampaignIds=campaign_ids
        )
        output_status_message("Deleted Campaign Id {0}".format(campaign_ids['long'][0]))

    except WebFault as ex:
        output_webfault_errors(ex)
    except Exception as ex:
        output_status_message(ex)

# Main execution
if __name__ == '__main__':

    print("Loading the web service client proxies...")
    
    authorization_data=AuthorizationData(
        account_id=None,
        customer_id=None,
        developer_token=DEVELOPER_TOKEN,
        authentication=None,
    )

    campaign_service=ServiceClient(
        service='CampaignManagementService', 
        version=13,
        authorization_data=authorization_data, 
        environment=ENVIRONMENT,
    )
        
    authenticate(authorization_data)
        
    main(authorization_data)

另請參閱

開始使用 Bing 廣告 API