Hi Google Ads,
I am trying to perform SiteLink type extension, but it is becoming impossible due to lack of documentation. Someone to tell me if I'm going well.
<code>
use Google\Protobuf\StringValue;
use Google\ApiCore\ApiException;
use Google\Ads\GoogleAds\Util\V1\ResourceNames;
use Google\Ads\GoogleAds\V1\Common\AdScheduleInfo;
use Google\Ads\GoogleAds\Lib\V1\GoogleAdsException;
use Google\Ads\GoogleAds\V1\Common\SitelinkFeedItem;
use Google\Ads\GoogleAds\V1\Resources\ExtensionFeedItem;
use Google\Ads\GoogleAds\V1\Resources\AdGroupExtensionSetting;
use Google\Ads\GoogleAds\V1\Enums\ExtensionTypeEnum\ExtensionType;
use Google\Ads\GoogleAds\V1\Services\AdGroupExtensionSettingOperation;
use Google\Ads\GoogleAds\V1\Enums\DayOfWeekEnum\DayOfWeek;
use Google\Ads\GoogleAds\V1\Enums\MinuteOfHourEnum\MinuteOfHour;
private function newAdScheduleInfo($nameDayOfWeek,$startMinute,$endMinute,$startHour,$endHour){
$adScheduleInfo = new AdScheduleInfo();
$adScheduleInfo ->setDayOfWeek( (new DayOfWeek)->value($nameDayOfWeek) );
$adScheduleInfo ->setStartMinute( (new MinuteOfHour)->value($startMinute) );
$adScheduleInfo ->setEndMinute( (new MinuteOfHour)->value($endMinute) );
$adScheduleInfo ->setStartHourValue($startHour);
$adScheduleInfo ->setEndHourValue($endHour);
return $adScheduleInfo;
}
private function newSiteLinkOption($linkUrl,$link_text, $line1, $line2){
$sitelink = new SitelinkFeedItem();
$sitelink->setLinkTextValue($link_text);
$sitelink->setLine2Value($line2);
$sitelink->setLine1Value($line1);
$sitelink->setFinalUrls( [ new StringValue( [ 'value' => $linkUrl ] ) ] );
return $sitelink;
}
$operations = [];
$adGroupResourceName =new StringValue( [ 'value' => ResourceNames::forAdGroup($this->customerId, $groupId) ] );
$adScheduleInfo = [];
$days = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY','FRIDAY'];
foreach ($days as $day) {
$adScheduleInfo[] = $this->newAdScheduleInfo($day,'ZERO','ZERO',0,24);
}
$sitelink_feed_item = $this->newSiteLinkOption('
https://experimax.com','Support Experimax', 'Desc 1 ', 'Desc 2' );
if(!$sitelink_feed_item){
return false;
}
$extensionFeedItem = new ExtensionFeedItem([
'sitelink_feed_item' => $sitelink_feed_item,
'ad_schedules' => $adScheduleInfo,
'start_date_time' => "2021-03-05 09:00:00",
'end_date_time' => "2024-03-05 08:00:00",
]);
$adGroupExtensionSetting = new AdGroupExtensionSetting([
'ad_group' => $adGroupResourceName,
'extension_type' => ExtensionType::SITELINK,
'extension_feed_items' => [$extensionFeedItem->getResourceName()]
]);
$adGroupExtensionSettingOperation = new AdGroupExtensionSettingOperation();
$adGroupExtensionSettingOperation->setCreate($adGroupExtensionSetting);
$operations[] = $adGroupExtensionSettingOperation;
$adGroupExtensionSettingServiceClient = $this->service->getAdGroupExtensionSettingServiceClient();
$response = $adGroupExtensionSettingServiceClient->mutateAdGroupExtensionSettings($this->customerId, $operations);
</code>
<error>
string(1102) "{
"message": "Request contains an invalid argument.",
"code": 3,
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": 0,
"data": "
type.googleapis.com\/google.ads.googleads.v1.errors.GoogleAdsFailure"
},
{
"@type": 0,
"data": [
{
"errorCode": {
"requestError": "RESOURCE_NAME_MISSING"
},
"message": "Resource name is missing.",
"location": {
"fieldPathElements": [
{
"fieldName": "operations",
"index": "0"
},
{
"fieldName": "create"
},
{
"fieldName": "extension_feed_items"
}
]
}
}
]
}
]
</error>