Re: error for removing keywords from negative keywords shared set

2023-05-12 Thread Qihuai Duan
Hello,

Issue solved, it lacked of one line of argument in the add_argument

Thx 

Le vendredi 12 mai 2023 à 15:41:58 UTC+2, Google Ads API Forum Advisor a 
écrit :

> Hello,
>
> Thanks for reaching out to the Google Ads API Team.
>
> I understand that you are experiencing an INVALID_ARGUMENT error while 
> using the Search method on your python client library. Can you please 
> confirm if this operation is referring to the python client library 
> *find_and_remove_criteria_from_shared_set.py* file?
>
>- *find_and_remove_criteria_from_shared_set.py* - 
>
> *https://github.com/googleads/google-ads-python/blob/main/examples/advanced_operations/find_and_remove_criteria_from_shared_set.py*
>  
>
> 
>  
>
> Additionally, can you please provide us with the complete *request* and 
> *response* logs with *request* *ID* generated on your end so our team can 
> investigate further and provide recommendations?
>
>- *Request - *
>
> *https://developers.google.com/google-ads/api/docs/concepts/field-service#request*
>  
>
> 
>  
>- *Response -  *
>
> *https://developers.google.com/google-ads/api/docs/concepts/field-service#response*
>  
>
> 
>  
>- *Request ID - *
>
> *https://developers.google.com/google-ads/api/docs/concepts/call-structure#request-id*
>  
>
> 
>  
>
> You can provide it via Reply privately to the author option. If this 
> option is not available, then send it instead on this email address 
> googleadsa...@google.com.
>
> Regards,
> [image: Google Logo] Google Ads API Team 
>
> ref:_00D1U1174p._5004Q2lHEzt:ref
>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/d9c1928d-5ee2-48e5-b5e6-7000b5c3f97bn%40googlegroups.com.


Error for removing keywords from negative keywords shared set

2023-05-12 Thread Qihuai Duan
Hello 

I've got an error while I tried with the following command lines :
 
python remove_negative_kw_list_shared_set.py -c 27*24 -n 
"API_Negative_keyword_list_ 27*24  " -k test3

It returned me an error as below:
Request made: ClientCustomerId:  27*24  , Host: 
googleads.googleapis.com, Method: 
/google.ads.googleads.v13.services.GoogleAdsService/Search, RequestId: 
1JhvDHTQAhL
sF6ehrmg7UQ, IsFault: True, FaultMessage: Error in shared_set.id IN (''): 
invalid number .
Request with ID "1JhvDHTQAhLsF6ehrmg7UQ" failed with status 
"INVALID_ARGUMENT" and includes the following errors:
Error with message "Error in shared_set.id IN (''): invalid number 
.".

Here is my script, what's the problem pls ?

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

_DEFAULT_PAGE_SIZE = 1

def main(client, customer_id, shared_set_names, keywords):
ga_service = client.get_service("GoogleAdsService")
shared_criterion_service = client.get_service("SharedCriterionService")

# First, retrieve all shared sets associated with the campaign.
shared_sets_query = (f"SELECT\n"
f"shared_set.id,\n"
f"shared_set.name\n"
f"FROM shared_set\n"
f"WHERE shared_set.name = '{shared_set_names}'")

try:
shared_set_search_request = client.get_type("SearchGoogleAdsRequest")
shared_set_search_request.customer_id = customer_id
shared_set_search_request.query = shared_sets_query
shared_set_search_request.page_size = _DEFAULT_PAGE_SIZE

shared_set_response = ga_service.search(
request=shared_set_search_request
)

shared_set_ids = []
for row in shared_set_response:
shared_set = row.shared_set
shared_set_ids.append(str(shared_set.id))
print(
f'Campaign shared set ID "{shared_set.id}" and name '
f'"{shared_set.name}" was found.'
)
except GoogleAdsException as ex:
handle_googleads_exception(ex)

ids = "','".join(shared_set_ids)
kws = "','".join(keywords)

shared_criteria_query = (f"SELECT\n"
f"shared_criterion.type,\n"
f"shared_criterion.keyword.text,\n"
f"shared_criterion.keyword.match_type,\n"
f"shared_set.id\n"
f"FROM shared_criterion\n"
f"WHERE shared_set.id IN ('{ids}')\n"
f"AND shared_criterion.keyword.text IN ('{kws}')\n")

try:
shared_criteria_search_request = client.get_type(
"SearchGoogleAdsRequest"
)
shared_criteria_search_request.customer_id = customer_id
shared_criteria_search_request.query = shared_criteria_query
shared_criteria_search_request.page_size = _DEFAULT_PAGE_SIZE

shared_criteria_response = ga_service.search(
request=shared_criteria_search_request
)
except GoogleAdsException as ex:
handle_googleads_exception(ex)

criterion_type_enum = client.enums.CriterionTypeEnum
criterion_ids = []
for row in shared_criteria_response:
shared_criterion = row.shared_criterion
shared_criterion_resource_name = shared_criterion.resource_name

if shared_criterion.type_ == criterion_type_enum.KEYWORD:
keyword = shared_criterion.keyword
print(
"Shared criterion with resource name "
f'"{shared_criterion_resource_name}" for negative keyword '
f'with text "{keyword.text}" and match type '
f'"{keyword.match_type.name}" was found.'
)

criterion_ids.append(shared_criterion_resource_name)

# Finally, remove the criteria.
operations = []
for criteria_id in criterion_ids:
shared_criterion_operation = client.get_type("SharedCriterionOperation")
shared_criterion_operation.remove = criteria_id
operations.append(shared_criterion_operation)

try:
response = shared_criterion_service.mutate_shared_criteria(
customer_id=customer_id, operations=operations
)

for result in response.results:
print(f'Removed shared criterion "{result.resource_name}".')
except GoogleAdsException as ex:
handle_googleads_exception(ex)


def handle_googleads_exception(exception):
print(
f'Request with ID "{exception.request_id}" failed with status '
f'"{exception.error.code().name}" and includes the following errors:'
)
for error in exception.failure.errors:
print(f'\tError with message "{error.message}".')
if error.location:
for field_path_element in error.location.field_path_elements:
print(f"\t\tOn field: {field_path_element.field_name}")
sys.exit(1)

class StringWithSpace(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, ' '.join(values))

if __name__ == "__main__":
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
AUTH_PATH = "lib/google-ads.yaml"
googleads_client = GoogleAdsClient.load_from_storage(AUTH_PATH, version=
"v13")

parser = argparse.ArgumentParser(
description=(
"Finds shared sets, then finds and removes shared set "
"criteria under them."
)
)
# 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(
"-n",
"--shared_set_name",
action=StringWithSpace,
type=str,
required=True,
help="The negative keyword sh

Update negative keyword shared set

2023-05-10 Thread Qihuai Duan
Hello,

How could I update negative keywords shared set in python pls ? I have 
searched over the forum but I don't fin any hints.

Thx in advance
Qihuai

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/95ccf40f-f3bf-4156-bd05-13ffd9f25bbcn%40googlegroups.com.


Cannot see the result from request

2023-05-10 Thread Qihuai Duan
Hello,

I had executed my first request in Python for test, using service account, 
with the code below :

AUTH_PATH="lib/google-ads.yaml"
client = GoogleAdsClient.load_from_storage(AUTH_PATH)
ga_service=client.get_service("GoogleAdsService",version="v13")

query = """
SELECT
campaign.id,
ad_group.id,
ad_group.name
FROM ad_group
"""

search_request = client.get_type("SearchGoogleAdsRequest")
search_request.customer_id = customer_id
search_request.query = query
# search_request.page_size = _DEFAULT_PAGE_SIZE

results = ga_service.search(request=search_request)

for row in results:
print(
f"Ad group with ID {row.ad_group.id} and name "
f'"{row.ad_group.name}" was found in campaign with '
f"ID {row.campaign.id}."
)

The request worked but it did not show the results. While I check the 
results, it was masked

SearchPager

How could I solve this problem pls ?

Thx

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/6036eca5-0cef-4917-9046-719736b10cf2n%40googlegroups.com.