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.


RE: error for removing keywords from negative keywords shared set

2023-05-12 Thread 'Google Ads API Forum Advisor' via Google Ads API and AdWords API Forum
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 
googleadsapi-supp...@google.com.

Regards,

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/fLVn00RUJSPD00PRNaPuQWRf-TxPMwLVBH4Q%40sfdc.net.


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