PipedreamHQ / PipedreamHQ/pipedream
google_ads: report actions truncate results and send invalid field names
- Dominant language
- JavaScript
- Stars
- 11.7k
- Forks
- 5.8k
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 102
Description
## Problem
1. `Segments` defaults to `segments.date`, so the row count multiplies by the number of days in the range. Ordinary requests return very large result sets.
2. Results stop at 10,000 rows because `page_size` is never set and the response `nextPageToken` is discarded. Larger reports come back incomplete with no error shown. Users narrow the date range and run the report again, and every attempt uses quota.
3. `Fields`, `Segments` and `Metrics` accept free text and go straight into the GAQL `SELECT` without checking. Invalid names are rejected with a 400, and rejected requests still count against the daily quota. This is worse with AI agents, which guess field names and retry.
Affects Create Report, Create Campaign Report, Create Ad Report, Create Ad Group Report and Create Customer Report.
## What's needed
- Date segmentation off by default rather than on.
- Unknown field, segment and metric names rejected before a request is sent.
- A single report request returns complete results.
## Notes
- `SearchStream` counts as one operation regardless of response size and has no row cap: https://developers.google.com/google-ads/api/rest/common/search
- Paging behaviour and the 10,000 row default: https://developers.google.com/google-ads/api/docs/reporting/paging
- Failed requests that return a Google Ads failure still count against the daily quota: https://developers.google.com/google-ads/api/docs/best-practices/quotas
- The prefixing bug behind some invalid field names is tracked separately in #21961.
- Context: quota exhaustion reported in #19945, #21509, #21554, #21782, #21926.
Contributor guide
Research direction
Start by locating the Create Report, Create Campaign Report, Create Ad Report, Create Ad Group Report, and Create Customer Report entry points. Trace how each builds and sends its GAQL request, then verify date segmentation defaults, field validation, and complete result retrieval against the linked Google Ads documentation; done means one request returns complete results and rejects unknown names before sending.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 62/100