广告组 更新操作
This commit is contained in:
parent
38429b015f
commit
297e751b68
@ -77,6 +77,7 @@ class GoogleAdsController
|
|||||||
return $this->addCampaignBudget($options);
|
return $this->addCampaignBudget($options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function createGroup(Request $request)
|
public function createGroup(Request $request)
|
||||||
{
|
{
|
||||||
$options = $request->all();
|
$options = $request->all();
|
||||||
@ -85,6 +86,14 @@ class GoogleAdsController
|
|||||||
return $this->addGroup($options);
|
return $this->addGroup($options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateGroup(Request $request)
|
||||||
|
{
|
||||||
|
$options = $request->all();
|
||||||
|
|
||||||
|
// 继续处理 Google Ads API 操作
|
||||||
|
return $this->modifyGroup($options);
|
||||||
|
}
|
||||||
|
|
||||||
public function createLinkManagerToClient(Request $request)
|
public function createLinkManagerToClient(Request $request)
|
||||||
{
|
{
|
||||||
$options = $request->all();
|
$options = $request->all();
|
||||||
@ -183,22 +192,43 @@ class GoogleAdsController
|
|||||||
return $this->successResponse(['groups_created' => $resourceName]);
|
return $this->successResponse(['groups_created' => $resourceName]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新广告组
|
||||||
|
* @throws ApiException
|
||||||
|
*/
|
||||||
|
public function modifyGroup($options): Response
|
||||||
|
{
|
||||||
|
$adGroupStatus = [
|
||||||
|
0, // UNSPECIFIED
|
||||||
|
1, // UNKNOWN
|
||||||
|
2, // ENABLED
|
||||||
|
3, // PAUSED
|
||||||
|
4 // REMOVED
|
||||||
|
];
|
||||||
|
$options['bid_micro_amount'] = $options['amount'] * 1000000 < 0 ? 0 : $options['amount'] * 1000000;
|
||||||
|
if (!in_array($options['status'], $adGroupStatus)) {
|
||||||
|
return $this->errorResponse(101, 'status参数错误');
|
||||||
|
}
|
||||||
|
$resourceName = $this->googleAdsGroupService->runUpdateGroup($options);
|
||||||
|
return $this->successResponse(['group_updated' => $resourceName]);
|
||||||
|
}
|
||||||
|
|
||||||
// 可以加入一些公共方法
|
// 可以加入一些公共方法
|
||||||
protected function successResponse($data): Response
|
protected function successResponse($data): Response
|
||||||
{
|
{
|
||||||
return Json([
|
return Json([
|
||||||
'code' => 200,
|
'code' => 0,
|
||||||
'status' => 'success',
|
'msg' => 'ok',
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function errorResponse($message): Response
|
protected function errorResponse($code, $message, $data = []): Response
|
||||||
{
|
{
|
||||||
return Json([
|
return Json([
|
||||||
'code' => 400,
|
'code' => $code,
|
||||||
'status' => 'error',
|
'msg' => $message ?: 'error',
|
||||||
'message' => $message,
|
'data' => $data
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ use Google\Ads\GoogleAds\Lib\V18\GoogleAdsClient;
|
|||||||
use Google\Ads\GoogleAds\Lib\V18\GoogleAdsClientBuilder;
|
use Google\Ads\GoogleAds\Lib\V18\GoogleAdsClientBuilder;
|
||||||
use Google\Ads\GoogleAds\Lib\V18\GoogleAdsException;
|
use Google\Ads\GoogleAds\Lib\V18\GoogleAdsException;
|
||||||
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
|
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
|
||||||
|
use Google\Ads\GoogleAds\Util\FieldMasks;
|
||||||
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
|
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
|
||||||
use Google\Ads\GoogleAds\V18\Enums\AdGroupStatusEnum\AdGroupStatus;
|
use Google\Ads\GoogleAds\V18\Enums\AdGroupStatusEnum\AdGroupStatus;
|
||||||
use Google\Ads\GoogleAds\V18\Enums\AdGroupTypeEnum\AdGroupType;
|
use Google\Ads\GoogleAds\V18\Enums\AdGroupTypeEnum\AdGroupType;
|
||||||
@ -107,15 +108,88 @@ class GoogleAdsGroupService
|
|||||||
$customerId,
|
$customerId,
|
||||||
$operations
|
$operations
|
||||||
));
|
));
|
||||||
$resourceNames = [];
|
$resourceNames = [];
|
||||||
|
|
||||||
printf("Added %d ad groups:%s", $response->getResults()->count(), PHP_EOL);
|
printf("Added %d ad groups:%s", $response->getResults()->count(), PHP_EOL);
|
||||||
|
|
||||||
foreach ($response->getResults() as $addedAdGroup) {
|
foreach ($response->getResults() as $addedAdGroup) {
|
||||||
/** @var AdGroup $addedAdGroup */
|
/** @var AdGroup $addedAdGroup */
|
||||||
print $addedAdGroup->getResourceName() . PHP_EOL;
|
print $addedAdGroup->getResourceName() . PHP_EOL;
|
||||||
$resourceNames[] = $addedAdGroup->getResourceName();
|
$resourceNames[] = $addedAdGroup->getResourceName();
|
||||||
}
|
}
|
||||||
return $resourceNames;
|
return $resourceNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This example updates the CPC bid and status for a given ad group. To get ad groups, run
|
||||||
|
* GetAdGroups.php.
|
||||||
|
*/
|
||||||
|
/* @param int $customerId the customer ID
|
||||||
|
* @param $options
|
||||||
|
* @return mixed
|
||||||
|
* @throws ApiException
|
||||||
|
*/
|
||||||
|
public function runUpdateGroup($options): mixed
|
||||||
|
{
|
||||||
|
$googleAdsClient = $this->googleAdsClient;
|
||||||
|
// Creates a single shared budget to be used by the campaigns added below.
|
||||||
|
|
||||||
|
$resourceNames = self::updateGroup($googleAdsClient, $options['customer_id'], $options['group_id'], $options['bid_micro_amount'], $options['status']);
|
||||||
|
|
||||||
|
return $resourceNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs the updateAdGroup example.
|
||||||
|
*
|
||||||
|
* @param GoogleAdsClient $googleAdsClient the Google Ads API client
|
||||||
|
* @param int $customerId the customer ID
|
||||||
|
* @param int $adGroupId the ID of ad group to update
|
||||||
|
* @param int $bidMicroAmount the bid amount in micros to use for the ad group bid
|
||||||
|
*/
|
||||||
|
// [START update_ad_group]
|
||||||
|
public static function updateGroup(
|
||||||
|
GoogleAdsClient $googleAdsClient,
|
||||||
|
int $customerId,
|
||||||
|
int $adGroupId,
|
||||||
|
$bidMicroAmount,
|
||||||
|
int $status
|
||||||
|
)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Creates an ad group object with the specified resource name and other changes.
|
||||||
|
$adGroup = new AdGroup([
|
||||||
|
'resource_name' => ResourceNames::forAdGroup($customerId, $adGroupId),
|
||||||
|
'cpc_bid_micros' => $bidMicroAmount,
|
||||||
|
// 'status' => AdGroupStatus::PAUSED
|
||||||
|
'status' => $status
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Constructs an operation that will update the ad group with the specified resource name,
|
||||||
|
// using the FieldMasks utility to derive the update mask. This mask tells the Google Ads
|
||||||
|
// API which attributes of the ad group you want to change.
|
||||||
|
$adGroupOperation = new AdGroupOperation();
|
||||||
|
$adGroupOperation->setUpdate($adGroup);
|
||||||
|
$adGroupOperation->setUpdateMask(FieldMasks::allSetFieldsOf($adGroup));
|
||||||
|
|
||||||
|
// Issues a mutate request to update the ad group.
|
||||||
|
$adGroupServiceClient = $googleAdsClient->getAdGroupServiceClient();
|
||||||
|
$response = $adGroupServiceClient->mutateAdGroups(MutateAdGroupsRequest::build(
|
||||||
|
$customerId,
|
||||||
|
[$adGroupOperation]
|
||||||
|
));
|
||||||
|
|
||||||
|
// Prints the resource name of the updated ad group.
|
||||||
|
/** @var AdGroup $updatedAdGroup */
|
||||||
|
$updatedAdGroup = $response->getResults()[0];
|
||||||
|
printf(
|
||||||
|
"Updated ad group with resource name: '%s'%s",
|
||||||
|
$updatedAdGroup->getResourceName(),
|
||||||
|
PHP_EOL
|
||||||
|
);
|
||||||
|
return $updatedAdGroup->getResourceName();
|
||||||
|
}
|
||||||
|
// [END update_ad_group]
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,9 @@ Route::group('/googleads', function () {
|
|||||||
Route::group('/group', function () {
|
Route::group('/group', function () {
|
||||||
Route::post('/create', [GoogleAdsController::class, 'createGroup']);
|
Route::post('/create', [GoogleAdsController::class, 'createGroup']);
|
||||||
});
|
});
|
||||||
|
Route::group('/group', function () {
|
||||||
|
Route::post('/update', [GoogleAdsController::class, 'updateGroup']);
|
||||||
|
});
|
||||||
Route::group('/account_link', function () {
|
Route::group('/account_link', function () {
|
||||||
Route::post('/create', [GoogleAdsController::class, 'createLinkManagerToClient']);
|
Route::post('/create', [GoogleAdsController::class, 'createLinkManagerToClient']);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user