I'm currently running a script locally to generate reports using GoogleAdsManager API. Prior running the script I've created new service account key in json format as the key type together with ~/googleads.yaml
.
Here's the dev guide.
However, I wanted to schedule this script on (AWS Glue
).
This is the sample script and the issue I currently faced is :
How do call this method ad_manager.AdManagerClient.LoadFromStorage() from aws? I've stored the credentials (JSON
and YAML
) in AWS Secrets Manager
from googleads import ad_manager, oauth2 import tempfile import _locale _locale._getdefaultlocale = (lambda *args: ['en_US', 'UTF-8']) ad_unit_id = XXXXXXXXXX def generate_ad_impressions(client): # Initialize appropriate service. report_service = client.GetService("ReportService", version="v202108") # Initialize a DataDownloader. report_downloader = client.GetDataDownloader(version="v202108") # Create statement object to filter for an order. statement = ( ad_manager.StatementBuilder(version="v202108") .Where("PARENT_AD_UNIT_ID = :id") .WithBindVariable("id", mbns_aa_vod_ad_unit_id) .Limit(None) # No limit/offset for reports .Offset(None) ) report_job = { "reportQuery": { "dimensions": ["DATE", "HOUR"], "columns": [ "AD_SERVER_IMPRESSIONS", ], "dateRangeType": "TODAY", "startDate": { "year": "2022", "month": "1", "day": "25" }, "endDate": { "year": "2022", "month": "1", "day": "25" }, "statement": statement.ToStatement(), } } try: # Run the report and wait for it to finish. report_job_id = report_downloader.WaitForReport(report_job) except: print("Failed to generate report.") # Change to your preferred export format. export_format = "CSV_DUMP" # report_file = tempfile.NamedTemporaryFile(suffix=".csv.gz", delete=False) with open('ad_unit_report.csv.gz', mode='wb') as report_file: # Download report data. report_downloader.DownloadReportToFile(report_job_id, export_format, report_file) report_file.close() # Download report data. downloaded_report = report_downloader.DownloadReportToFile(report_job_id, export_format, report_file) report_file.close() print('success!') if __name__ == '__main__': ad_manager_client = ad_manager.AdManagerClient.LoadFromStorage('path_to_yaml_file') generate_ad_impressions(ad_manager_client)