비승인 광고 모두 보기
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
자바
// Copyright 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.ads.googleads.examples.campaignmanagement ;
import com.beust.jcommander.Parameter ;
import com.google.ads.googleads.examples.utils.ArgumentNames ;
import com.google.ads.googleads.examples.utils.CodeSampleParams ;
import com.google.ads.googleads.lib.GoogleAdsClient ;
import com.google.ads.googleads.v23.common.PolicyTopicEntry ;
import com.google.ads.googleads.v23.common.PolicyTopicEvidence ;
import com.google.ads.googleads.v23.common.PolicyTopicEvidence.TextList ;
import com.google.ads.googleads.v23.errors.GoogleAdsError ;
import com.google.ads.googleads.v23.errors.GoogleAdsException ;
import com.google.ads.googleads.v23.resources.Ad ;
import com.google.ads.googleads.v23.resources.AdGroupAd ;
import com.google.ads.googleads.v23.resources.AdGroupAdPolicySummary ;
import com.google.ads.googleads.v23.services.GoogleAdsRow ;
import com.google.ads.googleads.v23.services.GoogleAdsServiceClient ;
import com.google.ads.googleads.v23.services.GoogleAdsServiceClient.SearchPagedResponse ;
import com.google.ads.googleads.v23.services.SearchGoogleAdsRequest ;
import com.google.ads.googleads.v23.services.SearchSettings ;
import java.io.FileNotFoundException ;
import java.io.IOException ;
/** Retrieves all the disapproved ads in a given campaign. */
public class GetAllDisapprovedAds {
private static class GetAllDisapprovedAdsParams extends CodeSampleParams {
@Parameter ( names = ArgumentNames . CUSTOMER_ID , required = true )
private Long customerId ;
@Parameter ( names = ArgumentNames . CAMPAIGN_ID , required = true )
private Long campaignId ;
}
public static void main ( String [] args ) {
GetAllDisapprovedAdsParams params = new GetAllDisapprovedAdsParams ();
if ( ! params . parseArguments ( args )) {
// Either pass the required parameters for this example on the command line, or insert them
// into the code here. See the parameter class definition above for descriptions.
params . customerId = Long . parseLong ( "INSERT_CUSTOMER_ID_HERE" );
params . campaignId = Long . parseLong ( "INSERT_CAMPAIGN_ID_HERE" );
}
GoogleAdsClient googleAdsClient = null ;
try {
googleAdsClient = GoogleAdsClient . newBuilder (). fromPropertiesFile (). build ();
} catch ( FileNotFoundException fnfe ) {
System . err . printf (
"Failed to load GoogleAdsClient configuration from file. Exception: %s%n" , fnfe );
System . exit ( 1 );
} catch ( IOException ioe ) {
System . err . printf ( "Failed to create GoogleAdsClient. Exception: %s%n" , ioe );
System . exit ( 1 );
}
try {
new GetAllDisapprovedAds (). runExample ( googleAdsClient , params . customerId , params . campaignId );
} catch ( GoogleAdsException gae ) {
// GoogleAdsException is the base class for most exceptions thrown by an API request.
// Instances of this exception have a message and a GoogleAdsFailure that contains a
// collection of GoogleAdsErrors that indicate the underlying causes of the
// GoogleAdsException.
System . err . printf (
"Request ID %s failed due to GoogleAdsException. Underlying errors:%n" ,
gae . getRequestId ());
int i = 0 ;
for ( GoogleAdsError googleAdsError : gae . getGoogleAdsFailure (). getErrorsList ()) {
System . err . printf ( " Error %d: %s%n" , i ++ , googleAdsError );
}
System . exit ( 1 );
}
}
/**
* Runs the example.
*
* @param googleAdsClient the Google Ads API client.
* @param customerId the client customer ID.
* @param campaignId the campaign ID for which ads will be retrieved.
* @throws GoogleAdsException if an API request failed with one or more service errors.
*/
private void runExample ( GoogleAdsClient googleAdsClient , long customerId , Long campaignId ) {
try ( GoogleAdsServiceClient googleAdsServiceClient =
googleAdsClient . getLatestVersion (). createGoogleAdsServiceClient ()) {
String searchQuery =
String . format (
"SELECT ad_group_ad.ad.id,"
+ "ad_group_ad.ad.type,"
+ "ad_group_ad.policy_summary.approval_status,"
+ "ad_group_ad.policy_summary.policy_topic_entries "
+ "FROM ad_group_ad "
+ "WHERE campaign.id = %d "
+ "AND ad_group_ad.policy_summary.approval_status = 'DISAPPROVED'" ,
campaignId );
// Creates a request that will retrieve all disapproved ads.
SearchGoogleAdsRequest request =
SearchGoogleAdsRequest . newBuilder ()
. setCustomerId ( Long . toString ( customerId ))
. setQuery ( searchQuery )
. setSearchSettings (
SearchSettings . newBuilder (). setReturnTotalResultsCount ( true ))
. build ();
// Issues the search request.
SearchPagedResponse searchPagedResponse = googleAdsServiceClient . search ( request );
// Iterates over all rows in all pages and counts disapproved ads.
for ( GoogleAdsRow googleAdsRow : searchPagedResponse . iterateAll ()) {
AdGroupAd adGroupAd = googleAdsRow . getAdGroupAd ();
AdGroupAdPolicySummary policySummary = adGroupAd . getPolicySummary ();
Ad ad = googleAdsRow . getAdGroupAd (). getAd ();
System . out . printf (
"Ad with ID %d and type '%s' was disapproved with the following policy "
+ "topic entries:%n" ,
ad . getId (), ad . getType ());
for ( PolicyTopicEntry policyTopicEntry : policySummary . getPolicyTopicEntriesList ()) {
System . out . printf (
" topic: '%s', type: '%s'%n" ,
policyTopicEntry . getTopic (), policyTopicEntry . getType ());
for ( PolicyTopicEvidence evidence : policyTopicEntry . getEvidencesList ()) {
TextList textList = evidence . getTextList ();
for ( int i = 0 ; i < textList . getTextsCount (); i ++ ) {
System . out . printf ( " evidence text[%d]: '%s'%n" , i , textList . getTexts ( i ));
}
}
}
}
System . out . printf (
"Number of disapproved ads found: %d%n" ,
searchPagedResponse . getPage (). getResponse (). getTotalResultsCount ());
}
}
}
C#
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using CommandLine ;
using Google.Ads.Gax.Examples ;
using Google.Ads.GoogleAds.Lib ;
using Google.Ads.GoogleAds.V23.Common ;
using Google.Ads.GoogleAds.V23.Errors ;
using Google.Ads.GoogleAds.V23.Resources ;
using Google.Ads.GoogleAds.V23.Services ;
using Google.Api.Gax ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
namespace Google.Ads.GoogleAds.Examples.V23
{
/// <summary>
/// This code example retrieves all the disapproved ads in a given campaign.
/// </summary>
public class GetAllDisapprovedAds : ExampleBase
{
/// <summary>
/// Command line options for running the <see cref="GetAllDisapprovedAds"/> example.
/// </summary>
public class Options : OptionsBase
{
/// <summary>
/// The customer ID for which the call is made.
/// </summary>
[Option("customerId", Required = true, HelpText =
"The customer ID for which the call is made.")]
public long CustomerId { get ; set ; }
/// <summary>
/// Id of the campaign for which disapproved ads are retrieved.
/// </summary>
[Option("campaignId", Required = true, HelpText =
"Id of the campaign for which disapproved ads are retrieved.")]
public long CampaignId { get ; set ; }
}
/// <summary>
/// Main method, to run this code example as a standalone application.
/// </summary>
/// <param name="args">The command line arguments.</param>
public static void Main ( string [] args )
{
Options options = ExampleUtilities . ParseCommandLine<Options> ( args );
GetAllDisapprovedAds codeExample = new GetAllDisapprovedAds ();
Console . WriteLine ( codeExample . Description );
codeExample . Run ( new GoogleAdsClient (), options . CustomerId , options . CampaignId );
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description = >
"This code example retrieves all the disapproved ads in a given campaign." ;
/// <summary>
/// Runs the code example.
/// </summary>
/// <param name="client">The Google Ads client.</param>
/// <param name="customerId">The customer ID for which the call is made.</param>
/// <param name="campaignId">Id of the campaign for which disapproved ads
/// are retrieved.</param>
public void Run ( GoogleAdsClient client , long customerId , long campaignId )
{
// Get the GoogleAdsService.
GoogleAdsServiceClient googleAdsService = client . GetService (
Services . V23 . GoogleAdsService );
string searchQuery = $ @"
SELECT
ad_group_ad.ad.id,
ad_group_ad.ad.type,
ad_group_ad.policy_summary.approval_status,
ad_group_ad.policy_summary.policy_topic_entries
FROM ad_group_ad
WHERE
campaign.id = {campaignId}
AND ad_group_ad.policy_summary.approval_status = DISAPPROVED" ;
// Create a request that will retrieve all disapproved ads.
SearchGoogleAdsRequest request = new SearchGoogleAdsRequest ()
{
Query = searchQuery ,
CustomerId = customerId . ToString (),
SearchSettings = new SearchSettings ()
{
ReturnTotalResultsCount = true
}
};
try
{
// Issue the search request.
PagedEnumerable<SearchGoogleAdsResponse , GoogleAdsRow > searchPagedResponse =
googleAdsService . Search ( request );
long disapprovedAdsCount = searchPagedResponse . AsRawResponses ()
. First (). TotalResultsCount ;
// Iterate over all rows in all rows returned and count disapproved Ads
foreach ( GoogleAdsRow googleAdsRow in searchPagedResponse )
{
AdGroupAdPolicySummary policySummary = googleAdsRow . AdGroupAd . PolicySummary ;
AdGroupAd adGroupAd = googleAdsRow . AdGroupAd ;
Ad ad = adGroupAd . Ad ;
Console . WriteLine (
"Ad with ID {0} and type '{1}' was disapproved with the " +
"following policy topic entries: " ,
ad . Id , ad . Type );
// Display the policy topic entries related to the ad disapproval.
foreach ( PolicyTopicEntry policyTopicEntry in policySummary . PolicyTopicEntries )
{
Console . WriteLine ( " topic: {0}, type: '{1}'" ,
policyTopicEntry . Topic ,
policyTopicEntry . Type );
// Display the attributes and values that triggered the policy topic.
if ( policyTopicEntry . Evidences != null )
{
foreach ( PolicyTopicEvidence evidence in policyTopicEntry . Evidences )
{
if ( evidence . TextList != null )
{
for ( int i = 0 ; i < evidence . TextList . Texts . Count ; i ++ )
{
Console . WriteLine ( " evidence text[{0}]: {1}" , i ,
evidence . TextList . Texts [ i ]);
}
}
}
}
}
}
Console . WriteLine ( "Number of disapproved ads found: {0}" , disapprovedAdsCount );
}
catch ( GoogleAdsException e )
{
Console . WriteLine ( "Failure:" );
Console . WriteLine ( $"Message: {e.Message}" );
Console . WriteLine ( $"Failure: {e.Failure}" );
Console . WriteLine ( $"Request ID: {e.RequestId}" );
throw ;
}
}
}
}
PHP
<?php
/**
* Copyright 2018 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Google\Ads\GoogleAds\Examples\CampaignManagement;
require __DIR__ . '/../../vendor/autoload.php';
use GetOpt\GetOpt;
use Google\Ads\GoogleAds\Examples\Utils\ArgumentNames;
use Google\Ads\GoogleAds\Examples\Utils\ArgumentParser;
use Google\Ads\GoogleAds\Lib\V23\GoogleAdsClient;
use Google\Ads\GoogleAds\Lib\V23\GoogleAdsClientBuilder;
use Google\Ads\GoogleAds\Lib\V23\GoogleAdsException;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\V23\Common\PolicyTopicEntry;
use Google\Ads\GoogleAds\V23\Common\PolicyTopicEvidence;
use Google\Ads\GoogleAds\V23\Enums\AdTypeEnum\AdType;
use Google\Ads\GoogleAds\V23\Enums\PolicyTopicEntryTypeEnum\PolicyTopicEntryType;
use Google\Ads\GoogleAds\V23\Errors\GoogleAdsError;
use Google\Ads\GoogleAds\V23\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V23\Services\SearchGoogleAdsRequest;
use Google\Ads\GoogleAds\V23\Services\SearchSettings;
use Google\ApiCore\ApiException;
/** This example retrieves all the disapproved ads in a given campaign. */
class GetAllDisapprovedAds
{
private const CUSTOMER_ID = 'INSERT_CUSTOMER_ID_HERE';
private const CAMPAIGN_ID = 'INSERT_CAMPAIGN_ID_HERE';
public static function main()
{
// Either pass the required parameters for this example on the command line, or insert them
// into the constants above.
$options = (new ArgumentParser())->parseCommandArguments([
ArgumentNames::CUSTOMER_ID => GetOpt::REQUIRED_ARGUMENT,
ArgumentNames::CAMPAIGN_ID => GetOpt::REQUIRED_ARGUMENT
]);
// Generate a refreshable OAuth2 credential for authentication.
$oAuth2Credential = (new OAuth2TokenBuilder())->fromFile()->build();
// Construct a Google Ads client configured from a properties file and the
// OAuth2 credentials above.
$googleAdsClient = (new GoogleAdsClientBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
try {
self::runExample(
$googleAdsClient,
$options[ArgumentNames::CUSTOMER_ID] ?: self::CUSTOMER_ID,
$options[ArgumentNames::CAMPAIGN_ID] ?: self::CAMPAIGN_ID
);
} catch (GoogleAdsException $googleAdsException) {
printf(
"Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
$googleAdsException->getRequestId(),
PHP_EOL,
PHP_EOL
);
foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) {
/** @var GoogleAdsError $error */
printf(
"\t%s: %s%s",
$error->getErrorCode()->getErrorCode(),
$error->getMessage(),
PHP_EOL
);
}
exit(1);
} catch (ApiException $apiException) {
printf(
"ApiException was thrown with message '%s'.%s",
$apiException->getMessage(),
PHP_EOL
);
exit(1);
}
}
/**
* Runs the example.
*
* @param GoogleAdsClient $googleAdsClient the Google Ads API client
* @param int $customerId the customer ID
* @param int $campaignId the campaign ID for which campaign ads will be retrieved
*/
public static function runExample(
GoogleAdsClient $googleAdsClient,
int $customerId,
int $campaignId
) {
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
// Creates a query that retrieves all the disapproved ads of the specified campaign ID.
$query = 'SELECT ad_group_ad.ad.id, '
. 'ad_group_ad.ad.type, '
. 'ad_group_ad.policy_summary.approval_status, '
. 'ad_group_ad.policy_summary.policy_topic_entries '
. 'FROM ad_group_ad '
. 'WHERE campaign.id = ' . $campaignId . ' '
. 'AND ad_group_ad.policy_summary.approval_status = DISAPPROVED';
// Issues a search request.
$response = $googleAdsServiceClient->search(
SearchGoogleAdsRequest::build($customerId, $query)->setSearchSettings(
new SearchSettings(['return_total_results_count' => true])
)
);
// Iterates over all rows in all pages and counts disapproved ads.
foreach ($response->iterateAllElements() as $googleAdsRow) {
/** @var GoogleAdsRow $googleAdsRow */
$adGroupAd = $googleAdsRow->getAdGroupAd();
$policySummary = $adGroupAd->getPolicySummary();
$ad = $adGroupAd->getAd();
printf(
"Ad with ID %d and type '%s' was disapproved with the following policy "
. "topic entries:%s",
$ad->getId(),
AdType::name($ad->getType()),
PHP_EOL
);
foreach ($policySummary->getPolicyTopicEntries() as $policyTopicEntry) {
/** @var PolicyTopicEntry $policyTopicEntry */
printf(
" topic: '%s', type: '%s'%s",
$policyTopicEntry->getTopic(),
PolicyTopicEntryType::name($policyTopicEntry->getType()),
PHP_EOL
);
foreach ($policyTopicEntry->getEvidences() as $evidence) {
/** @var PolicyTopicEvidence $evidence */
$textList = $evidence->getTextList();
if (!empty($textList)) {
for ($i = 0; $i < $textList->getTexts()->count(); $i++) {
printf(
" evidence text[%d]: '%s'%s",
$i,
$textList->getTexts()[$i],
PHP_EOL
);
}
}
}
}
}
printf(
"Number of disapproved ads found: %d.%s",
$response->getPage()->getResponseObject()->getTotalResultsCount(),
PHP_EOL
);
}
}
GetAllDisapprovedAds::main();
Python
#!/usr/bin/env python
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This illustrates how to retrieve disapproved ads in a given campaign."""
import argparse
import sys
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
from google.ads.googleads.v23.services.services.google_ads_service import (
GoogleAdsServiceClient ,
)
from google.ads.googleads.v23.services.types.google_ads_service import (
SearchGoogleAdsRequest ,
SearchGoogleAdsResponse ,
)
from google.ads.googleads.v23.resources.types.ad_group_ad import AdGroupAd
from google.ads.googleads.v23.resources.types.ad import Ad
from google.ads.googleads.v23.enums.types.policy_approval_status import (
PolicyApprovalStatusEnum ,
)
def main ( client : GoogleAdsClient , customer_id : str , campaign_id : str ) - > None :
ga_service : GoogleAdsServiceClient = client . get_service ( "GoogleAdsService" )
query : str = f """
SELECT
ad_group_ad.ad.id,
ad_group_ad.ad.type,
ad_group_ad.policy_summary.approval_status,
ad_group_ad.policy_summary.policy_topic_entries
FROM ad_group_ad
WHERE
campaign.id = { campaign_id }
AND ad_group_ad.policy_summary.approval_status = DISAPPROVED"""
request : SearchGoogleAdsRequest = client . get_type ( "SearchGoogleAdsRequest" )
request . customer_id = customer_id
request . search_settings . return_total_results_count = True
request . query = query
results : SearchGoogleAdsResponse = ga_service . search ( request = request )
disapproved_enum : PolicyApprovalStatusEnum . PolicyApprovalStatus = (
client . enums . PolicyApprovalStatusEnum . DISAPPROVED
)
print ( "Disapproved ads:" )
# Iterate over all ads in all rows returned and count disapproved ads.
for result_row in results :
# result_row: GoogleAdsRow = result_row <- Removed type hint
ad_group_ad : AdGroupAd = result_row . ad_group_ad
ad : Ad = ad_group_ad . ad
policy_summary = ad_group_ad . policy_summary
if not policy_summary . approval_status == disapproved_enum :
continue
print (
f 'Ad with ID " { ad . id } " and type " { ad . type_ . name } " was '
"disapproved with the following policy topic entries:"
)
# Display the policy topic entries related to the ad disapproval.
for pol_entry in policy_summary . policy_topic_entries :
# pol_entry: PolicyTopicEntry = pol_entry <- Removed type hint
print (
f ' \t topic: " { pol_entry . topic } ", type " { pol_entry . type_ . name } "'
)
# Display the attributes and values that triggered the policy
# topic.
for pol_evidence in pol_entry . evidences :
# pol_evidence: PolicyTopicEvidence = pol_evidence <- Removed type hint
for index , ev_text in enumerate ( pol_evidence . text_list . texts ):
# ev_text: str = ev_text <- Removed type hint
print ( f " \t\t evidence text[ { index } ]: { ev_text } " )
print ( f " \n Number of disapproved ads found: { results . total_results_count } " )
if __name__ == "__main__" :
parser : argparse . ArgumentParser = argparse . ArgumentParser (
description = (
"Lists disapproved ads for a given customer's specified "
"campaign."
)
)
# The following argument(s) should be provided to run the example.
parser . add_argument (
"-c" ,
"--customer_id" ,
type = str ,
required = True ,
help = "The Google Ads customer ID." ,
)
parser . add_argument (
"-i" , "--campaign_id" , type = str , required = True , help = "The campaign ID."
)
args : argparse . Namespace = parser . parse_args ()
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
googleads_client : GoogleAdsClient = GoogleAdsClient . load_from_storage (
version = "v23"
)
try :
main (
googleads_client ,
args . customer_id ,
args . campaign_id ,
)
except GoogleAdsException as ex :
print (
f 'Request with ID " { ex . request_id } " failed with status '
f '" { ex . error . code () . name } " and includes the following errors:'
)
for error in ex . failure . errors :
print ( f ' \t Error with message " { error . message } ".' )
if error . location :
for field_path_element in error . location . field_path_elements :
print ( f " \t\t On field: { field_path_element . field_name } " )
sys . exit ( 1 )
Ruby
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This code example retrieves all the disapproved ads in a given campaign.
require 'optparse'
require 'google/ads/google_ads'
def get_all_disapproved_ads ( customer_id , campaign_id )
# GoogleAdsClient will read a config file from
# ENV['HOME']/google_ads_config.rb when called without parameters
client = Google :: Ads :: GoogleAds :: GoogleAdsClient . new
ga_service = client . service . google_ads
search_query = <<~ QUERY
SELECT
ad_group_ad . ad . id ,
ad_group_ad . ad . type ,
ad_group_ad . policy_summary . approval_status ,
ad_group_ad . policy_summary . policy_topic_entries
FROM ad_group_ad
WHERE campaign . id = #{campaign_id}
AND ad_group_ad . policy_summary . approval_status = DISAPPROVED
QUERY
# Issue the search request.
response = ga_service . search (
customer_id : customer_id ,
query : search_query ,
)
disapproved_ads_count = 0 ;
# Iterate over all ads in all rows returned and count disapproved Ads
response . each do | row |
ad_group_ad = row . ad_group_ad
ad = ad_group_ad . ad
disapproved_ads_count += 1
puts sprintf ( 'Ad with ID %s and type %s was disapproved with the ' \
'following policy topic entries' ,
ad . id , ad . type )
# Display the policy topic entries related to the ad disapproval.
policy_summary . policy_topic_entries . each do | entry |
puts sprintf ( ' topic: %s, type: %s' , entry . topic , entry . type )
# Display the attributes and values that triggered the policy topic.
unless entry . evidences . nil?
entry . evidences . each do | evidence |
if ( evidence . text_list != nil )
evidence . text_list . texts . each do | text , index |
puts sprintf ( ' evidence text[%s]: %s' , i , text )
end
end
end
end
end
end
puts sprintf ( 'Number of disapproved ads found: %d' , disapproved_ads_count )
end
if __FILE__ == $0
options = {}
# The following parameter(s) should be provided to run the example. You can
# either specify these by changing the INSERT_XXX_ID_HERE values below, or on
# the command line.
#
# Parameters passed on the command line will override any parameters set in
# code.
#
# Running the example with -h will print the command line usage.
options [ :customer_id ] = 'INSERT_CUSTOMER_ID_HERE'
options [ :campaign_id ] = 'INSERT_CAMPAIGN_ID_HERE'
OptionParser . new do | opts |
opts . banner = sprintf ( 'Usage: ruby %s [options]' , File . basename ( __FILE__ ))
opts . separator ''
opts . separator 'Options:'
opts . on ( '-C' , '--customer-id CUSTOMER-ID' , String , 'Customer ID' ) do | v |
options [ :customer_id ] = v
end
opts . on ( '-c' , '--campaign-id CAMPAIGN-ID' , String ,
'Campaign ID' ) do | v |
options [ :campaign_id ] = v
end
opts . separator ''
opts . separator 'Help:'
opts . on_tail ( '-h' , '--help' , 'Show this message' ) do
puts opts
exit
end
end . parse!
begin
get_all_disapproved_ads ( options . fetch ( :customer_id ) . tr ( "-" , "" ), options [ :campaign_id ] )
rescue Google :: Ads :: GoogleAds :: Errors :: GoogleAdsError = > e
e . failure . errors . each do | error |
STDERR . printf ( "Error with message: %s \n " , error . message )
if error . location
error . location . field_path_elements . each do | field_path_element |
STDERR . printf ( " \t On field: %s \n " , field_path_element . field_name )
end
end
error . error_code . to_h . each do | k , v |
next if v == :UNSPECIFIED
STDERR . printf ( " \t Type: %s \n\t Code: %s \n " , k , v )
end
end
raise
end
end
Perl
#!/usr/bin/perl -w
#
# Copyright 2019, Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example retrieves all the disapproved ads in a given campaign.
use strict ;
use warnings ;
use utf8 ;
use FindBin qw($Bin) ;
use lib "$Bin/../../lib" ;
use Google::Ads::GoogleAds::Client ;
use Google::Ads::GoogleAds::Utils::GoogleAdsHelper ;
use Google::Ads::GoogleAds::Utils::SearchGoogleAdsIterator ;
use Google::Ads::GoogleAds::V23::Enums::PolicyApprovalStatusEnum
qw(DISAPPROVED) ;
use
Google::Ads::GoogleAds::V23::Services::GoogleAdsService::SearchGoogleAdsRequest ;
use Google::Ads::GoogleAds::V23::Services::GoogleAdsService::SearchSettings ;
use Getopt::Long qw(:config auto_help) ;
use Pod::Usage ;
use Cwd qw(abs_path) ;
# The following parameter(s) should be provided to run the example. You can
# either specify these by changing the INSERT_XXX_ID_HERE values below, or on
# the command line.
#
# Parameters passed on the command line will override any parameters set in
# code.
#
# Running the example with -h will print the command line usage.
my $customer_id = "INSERT_CUSTOMER_ID_HERE" ;
my $campaign_id = "INSERT_CAMPAIGN_ID_HERE" ;
sub get_all_disapproved_ads {
my ( $api_client , $customer_id , $campaign_id ) = @_ ;
# Create a query that retrieves all the disapproved ads of the specified campaign ID.
my $search_query =
"SELECT ad_group_ad.ad.id, ad_group_ad.ad.type, " .
"ad_group_ad.policy_summary.approval_status, " .
"ad_group_ad.policy_summary.policy_topic_entries " .
"FROM ad_group_ad WHERE campaign.id = $campaign_id " .
"AND ad_group_ad.policy_summary.approval_status = DISAPPROVED" ;
# Create a search Google Ads request.
my $search_request =
Google::Ads::GoogleAds::V23::Services::GoogleAdsService:: SearchGoogleAdsRequest
- >new ({
customerId = > $customer_id ,
query = > $search_query ,
searchSettings = >
Google::Ads::GoogleAds::V23::Services::GoogleAdsService:: SearchSettings
- >new ({
returnTotalResultsCount = > true
})});
# Get the GoogleAdsService.
my $google_ads_service = $api_client - >GoogleAdsService ();
my $iterator = Google::Ads::GoogleAds::Utils:: SearchGoogleAdsIterator - >new ({
service = > $google_ads_service ,
request = > $search_request
});
# Iterate over all rows in all pages and count disapproved ads.
while ( $iterator - >has_next ) {
my $google_ads_row = $iterator - >next ;
my $ad_group_ad = $google_ads_row - >{ adGroupAd };
my $ad = $ad_group_ad - >{ ad };
my $policy_summary = $ad_group_ad - >{ policySummary };
printf "Ad with ID %d and type '%s' was disapproved with the " .
"following policy topic entries:\n" , $ad - >{ id }, $ad - >{ type };
# Display the policy topic entries related to the ad disapproval.
foreach my $policy_topic_entry ( @ { $policy_summary - >{ policyTopicEntries }}) {
printf " topic: '%s', type: '%s'\n" , $policy_topic_entry - >{ topic },
$policy_topic_entry - >{ type };
# Display the attributes and values that triggered the policy topic.
next if not $policy_topic_entry - >{ evidences };
foreach my $policy_topic_evidence ( @ { $policy_topic_entry - >{ evidences }}) {
next if not $policy_topic_evidence - >{ textList };
while ( my ( $index , $text ) =
each @ { $policy_topic_evidence - >{ textList }{ texts }})
{
printf " evidence text[%d]: '%s'\n" , $index , $text ;
}
}
}
}
printf "Number of disapproved ads found: %d.\n" ,
$iterator - >get_current_response () - >{ totalResultsCount } || 0 ;
return 1 ;
}
# Don't run the example if the file is being included.
if ( abs_path ( $0 ) ne abs_path ( __FILE__ )) {
return 1 ;
}
# Get Google Ads Client, credentials will be read from ~/googleads.properties.
my $api_client = Google::Ads::GoogleAds:: Client - >new ();
# By default examples are set to die on any server returned fault.
$api_client - >set_die_on_faults ( 1 );
# Parameters passed on the command line will override any parameters set in code.
GetOptions ( "customer_id=s" = > \ $customer_id , "campaign_id=i" = > \ $campaign_id );
# Print the help message if the parameters are not initialized in the code nor
# in the command line.
pod2usage ( 2 ) if not check_params ( $customer_id , $campaign_id );
# Call the example.
get_all_disapproved_ads ( $api_client , $customer_id =~ s/-//g r , $campaign_id );
=pod
=head1 NAME
get_all_disapproved_ads
=head1 DESCRIPTION
This example retrieves all the disapproved ads in a given campaign.
=head1 SYNOPSIS
get_all_disapproved_ads.pl [options]
-help Show the help message.
-customer_id The Google Ads customer ID.
-campaign_id The campaign ID.
=cut
curl
참고: 이 단계의 직접 REST 코드 샘플은 여기에 제공되지 않지만 수동 REST 요청을 사용하여 이를 달성할 수 있습니다.
Google Ads API REST 인터페이스 문서와 메서드별 참조 페이지를 참고하세요. 프로토 정의에 따라 JSON 페이로드를 구성해야 합니다.
주요 리소스:
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스 에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스 에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책 을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2026-03-03(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2026-03-03(UTC)"],[],[]]