Dear Google Ads API Team,

 

I am trying to run several Python scripts to get dashboards or other infos 
from my campaigns, but had no success in almost every one.

 

Also, I've already been conceived as an Administrator in my company's MCC 
and in the specific Account which we want to be the reference for our 
scripts and to get information from.

 

To run my scripts, I've reunited MCC_id, Account_id, Client_id, 
Client_secret, refresh_token and developer_token like this:

 

    - MCC_id: In the google ads interface
    - Account_id: Also in google ads interface, but logged in the account 
we want;
    - Client_id: Google ads interface from the specific company
    - client_secret/secret_key and refresh token: Logging into the OAuth 
interface.

 

So, when i ran this Python script, it actually worked and we got the name 
of all campaigns:


############################
import argparse
import sys

 

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

 

config = dotenv_values(".env")
credentials = {
        "developer_token": config["developer_token"],
        "refresh_token": config["refresh_token"],
        "client_id": config["client_id"],
        "client_secret": config["client_secret"],
        "account_id": config["account_id"],
        "mcc_id": config["mcc_id"],
        "use_proto_plus": True
}

 

def main(client, customer_id):
    ga_service = client.get_service("GoogleAdsService")

 

    query = """
        SELECT
          campaign.id,
          campaign.name
        FROM campaign
        ORDER BY campaign.id"""

 

    # Issues a search request using streaming.
    stream = ga_service.search_stream(customer_id=customer_id, query=query)

 

    for batch in stream:
        for row in batch.results:
            print(
                f"Campaign with ID {row.campaign.id} and name "
                f'"{row.campaign.name}" was found.'
            )

 

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in 
the
    # home directory if none is specified.
    google_ads_client = GoogleAdsClient.load_from_dict(credentials, 
version="v13")

 

    customer_id = config["account_id"]

 

    try:
        main(google_ads_client, customer_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'\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)
############################
But when i tried to catch the data from a campaign using:

 

###########################
DEVELOPER_TOKEN = "xxxxxxxx-xxxxxxxxxxxxx"
PATH_TO_CREDENTIALS = "caminhoJson1205.json"
CUSTOMER_ID = "xxxxxxxxx"

 

def get_google_ads_data(credentials_path, developer_token, customer_id):
    try:
        # AutenticaĆ§Ć£o
        credentials = 
service_account.Credentials.from_service_account_file(credentials_path)
        credentiaels = credentials.with_scopes(['
https://www.googleapis.com/auth/adwords'])

 

        # Criar cliente do Google Ads
        google_ads_client = GoogleAdsClient(credentials=credentials, 
developer_token=developer_token)

 

        # Construir a consulta
        query = f"""
            SELECT
                campaign.id
                # ad_group.id,
                # ad.id,
                # ad.type,
                # ad.headline,
                # ad.description,
                # metrics.impressions,
                # metrics.clicks,
                # metrics.average_cpc
            FROM
                ad
            WHERE
                segments.date DURING LAST_7_DAYS
                AND metrics.impressions > 0
        """

 

        ga_service = google_ads_client.get_service("GoogleAdsService")

        # Executar a consulta
        response = ga_service.search_stream(customer_id=customer_id, 
query=query)

 

        # Exibir resultados
        for batch in response:
            for row in batch.results:
                print(f"Ad ID: {row.ad.id.value}, Headline: 
{row.ad.headline.value}, Impressions: {row.metrics.impressions.value}")

 

    except Exception as e:
        print(f"An error occurred: {e}")
        return None

 

if __name__ == "__main__":
    get_google_ads_data(PATH_TO_CREDENTIALS, DEVELOPER_TOKEN, CUSTOMER_ID)
############################
It didn't work.

 

Important to say we also created a service account (according to what GPT 
told us), but even when we tried to connect the service account to the 
project, it didn't work as well.

 

So please, help us step-by-step on how to properly catch campaigns using 
Python.

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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/f6388106-7049-4f99-a0f7-2c26e445df6dn%40googlegroups.com.

Reply via email to