Google Ads Control CLI and Prompt
Project description
Google Ads API CLI and Prompt
Features:
- A command line tool for executing GAQL queries against the Google Ads API. Like psql for the Google Ads API.
- A command line tool for managing Google Ads resources. Like kubectl for the Google Ads API.
- Centralized configuration with (soon) multiple config file management
- Automatically update refresh token
- Simple Python API with Pandas integration
Google Ads Interface for humans.
Installation
pip install adsctl
Getting started
Requirements:
- All the requirements to use the Google Ads API including Ads Developer Token and OAuth2 credentials
- See Google Ads API Quickstart for more details.
This project manages it's own configuration files. To create the configuration file run:
adsctl config
# Open the location of the config files
adsctl config explore
Open the generated config file and fill it with your credentials:
Dev Token, Client ID, Client Secret and Customer ID.
Don't add the refresh_token
.
To login and get a refresh token:
adsctl auth <path-to-secret.json>
The token is saved automatically in the configuration file.
GAQL Prompt
An interactive shell for executing GAQL queries against the Google Ads API.
$ gaql
>>> SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id
+----+-----------------------------+---------+-------------+
| | resourceName | name | id |
|----+-----------------------------+---------+-------------|
| 0 | customers/XXX/campaigns/YYY | name1 | 10000000000 |
| 1 | customers/XXX/campaigns/YYY | name2 | 10000000000 |
| 2 | customers/XXX/campaigns/YYY | name3 | 10000000000 |
+----+-----------------------------+---------+-------------+
By default adsctl prints it in "table" format but you can control the output
format with the -o
flag:
# Print the plain protobuf response
$ gaql -o plain
# Print a CSV response
$ gaql -o csv
You can also run a single commands and save the output to a file in the specified format:
$ gaql -c 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id' -o csv > my-query.csv
This assumes only table is returned but in more complex queries that include other resources or when using metrics or segments multiple tables are created. On those cases use the -o csv-files flag to save each table to a different file based on the table name.
$ gaql -c 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id' -o csv-files
$ ls
campaign.csv
CLI
Campaign Management
Status management
adsctl campaign -i <campaign-id> status enabled
adsctl campaign -i <campaign-id> status paused
Update budget
adsctl campaign -i <campaign-id> budget <amount>
Config
adsctl config show
Programmatic API
You can also use the Python API to easily execute GAQL queries and get the results as a Python dict or pandas DataFrame.
import adsctl as ads
# Read config file and create client
google_ads = ads.GoogleAds()
# Execute GAQL query
get_campaigns_query = """
SELECT campaign.name,
campaign_budget.amount_micros,
campaign.status,
campaign.optimization_score,
campaign.advertising_channel_type,
metrics.clicks,
metrics.impressions,
metrics.ctr,
metrics.average_cpc,
metrics.cost_micros,
campaign.bidding_strategy_type
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
AND campaign.status != 'REMOVED'
"""
tables = adsctl.query(get_campaigns_query)
# Print Pandas DataFrames
for table_name, table in tables.items():
print(table_name)
print(table, "\n")
campaign
resourceName status ... name optimizationScore
0 customers/XXXXXXXXXX/campaigns/YYYYYYYYYYY ENABLED ... my-campaign 0.839904
[1 rows x 6 columns]
metrics
clicks costMicros ctr averageCpc impressions
0 210 6730050 0.011457 32047.857143 18330
campaignBudget
resourceName amountMicros
0 customers/XXXXXXXXXX/campaignBudgets/ZZZZZZZZZZZ 1000000
Or just directly make a search_stream
request:
stream = app.search_stream(query)
for batch in stream:
for row in batch.results:
...
Disclaimer
This is not an official Google product.
This repository is maintained by a Googler but is not a supported Google product. Code and issues here are answered by maintainers and other community members on GitHub on a best-effort basis.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file adsctl-0.2.0.tar.gz
.
File metadata
- Download URL: adsctl-0.2.0.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20164a6ea6f0b57223d318b30c632d983f7bff3a727b63e62e8676449bfcc36f |
|
MD5 | dc88eb00c04088ad410f400062d64257 |
|
BLAKE2b-256 | 8373d8fdb0e95fe9b0e4ab2b84581a34b418386368f4cfbb664fc9b7f5f0b107 |
Provenance
File details
Details for the file adsctl-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: adsctl-0.2.0-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a31b74a98fc47b5beb13e53f2cf1e6d73ceef41159c3e49a392b2d66aeea8342 |
|
MD5 | b421e13a4dca237f91a03ee18f5019da |
|
BLAKE2b-256 | 512ee263e74bf061cd55ee1736d9c9f8d9e56427314f94d12f75c0721f836fc3 |