add existing sitelinks feed item to new adgroup in php

54 views
Skip to the first unread message

shlomi cohen

unread,
20 Jun 2017, 10:49:13 am20/06/17
to AdWords API Forum
hello i need some help
i need to add a existing sitelink feed item (by feedItemId ) to adgroup by adgroup id
i have shared sitelinks on multiple campaign
and i dont wont to have multiple duplicted sitelink

this is my code in php to add new sitelink i need to modfy that code so i can add existing sitelink to adgroup
$feedItemID = "14907223170";  //sitelink feed id that i need to add
$adgroupID = "1234" //adgroup id

$campaignExtensionSettingService =$adWordsServices->get($session, AdGroupExtensionSettingService::class);             

   foreach ( $links as $link ) {
 // Create a simple sitelink.
$sitelink = new SitelinkFeedItem();
$sitelink->setSitelinkText($link["sitename"]);
$sitelink->setSitelinkFinalUrls(
            new UrlList([ $link["sitelinks"] ]));
    $sitelinks[] = $sitelink;
   }
   // Create your campaign extension settings. This associates the sitelinks
// to your campaign.
$campaignExtensionSetting = new AdGroupExtensionSetting();
$campaignExtensionSetting->setAdGroupId($campaignId);
$campaignExtensionSetting->setExtensionType(FeedType::SITELINK);
$campaignExtensionSetting->setExtensionSetting(new ExtensionSetting());
$campaignExtensionSetting->getExtensionSetting()->setExtensions($sitelinks);
   // Create a campaign extension setting operation and add it to the list.
$operation = new AdGroupExtensionSettingOperation();
$operation->setOperator(Operator::ADD);
$operation->setOperand($campaignExtensionSetting);
$operations[] = $operation;

        $result = $campaignExtensionSettingService->mutate($operations);




can someone help my? thanks


Shwetha Vastrad (AdWords API Team)

unread,
20 Jun 2017, 2:51:06 pm20/06/17
to adwor...@googlegroups.com
Hi, 

You can specify the FeedId and the FeedItemId of the existing Sitelink in the SitelinkFeedItem as shown below to use existing Sitelinks in an AdGroupExtensionSetting:

    $sitelink = new SitelinkFeedItem($feedId, $feedItemId);
    $sitelinks
[] = $sitelink;
   
//create AdGroup extension setting
    $adGroupExtensionSetting
= new AdGroupExtensionSetting();
    $adGroupExtensionSetting
->setAdGroupId($adGroupId);
    $adGroupExtensionSetting
->setExtensionType(FeedType::SITELINK);
    $adGroupExtensionSetting
->setExtensionSetting(new ExtensionSetting());
    $adGroupExtensionSetting
->getExtensionSetting()->setExtensions($sitelinks);
   
// Create an ad group extension setting operation and add it to the list.

    $operation
= new AdGroupExtensionSettingOperation();
    $operation
->setOperator(Operator::ADD);

    $operation
->setOperand($adGroupExtensionSetting);
    $operations
= [$operation];
   
// Perform the mutate operation to add the sitelinks
    $result
= $adGroupExtensionSettingService->mutate($operations);


Regards,
Shwetha, AdWords API Team.

shlomi cohen

unread,
21 Jun 2017, 2:48:10 am21/06/17
to AdWords API Forum
Thank you! i have another qustion , how can i remove sitelink from adgroup? but dont delete the sitelink item just remove from spesifc adgroup?


בתאריך יום שלישי, 20 ביוני 2017 בשעה 21:51:06 UTC+3, מאת Shwetha Vastrad (AdWords API Team):
Hi, 

You can specify the FeedId and the FeedItemId of the existing Sitelink in the SitelinkFeedItem as shown below to use existing Sitelinks in an AdGroupExtensionSetting:

    $sitelink = new SitelinkFeedItem($feedId, $feedItemId);
    $sitelinks
[] = $sitelink;
   
//create AdGroup extension setting
    $adGroupExtensionSetting
= new AdGroupExtensionSetting();
    $adGroupExtensionSetting
->setAdGroupId($adGroupId);
    $adGroupExtensionSetting
->setExtensionType(FeedType::SITELINK);
    $adGroupExtensionSetting
->setExtensionSetting(new ExtensionSetting());
    $adGroupExtensionSetting
->getExtensionSetting()->setExtensions($sitelinks);

   
// Create a campaign extension setting operation and add it to the list.

    $operation
= new AdGroupExtensionSettingOperation();
    $operation
->setOperator(Operator::ADD);
    $operation
->setOperand($adGroupExtensionSetting);
    $operations
= [$operation];
   
// Perform the mutate operation to add the sitelinks
    $result
= $adGroupExtensionSettingService->mutate($operations);

Shwetha Vastrad (AdWords API Team)

unread,
21 Jun 2017, 10:37:33 am21/06/17
to AdWords API Forum
Hi, 

To remove the entire extension setting, you need to perform an AdGroupExtensionSettingService.mutate() request with the REMOVE operator. This will remove the association between the entity and all feed items in the extension setting. To remove an individual ExtensionFeedItems within the extension setting, you need to specify a new set of ExtensionFeedItems that does not contain the one you want to remove. Please see this guide for more details on removing ad extensions. Please note that the underlying feed items are not removed. You can either delete the feed items, or reuse the feed items in other extension settings.
Reply all
Reply to author
Forward
0 new messages