I am working with Google Ads Scripts. Based on my use case, I need to get the impressions, clicks, and other statistics about the products I have in my Google Ads account.

These product statistics will be analyzed in the script and based on certain criteria a Google Sheet document will be updated. The script goes like, retrieving all products (along with their statistics) from Google Ads account, see if the products impression and clicks meet a category (30 Impression, 1 click = Category "A", 20 Impressions, 0 Clicks = "Category B"), determines the product category, open Google Sheet hosted on Google Drive and updates the Category column in the Sheet based on product name or id.

Currently, I am facing an issue with retrieving Products and their statistics from Google Ads Account using Ads Script. I used the following code snippets to look for products but found no method or class that would help me achieve my desired results. I can only retrieve the productGroups, AdGroups, and Campaigns but none of them allow me to extract individual products.

function productGroup(){   var prodGroupIter = AdsApp.productGroups().get();   while (prodGroupIter.hasNext()){     Logger.log("prodGroup: ")     var prodGroup = prodGroupIter.next();     Logger.log(prodGroup.getValue());   } } function adGroup() {   var adGroupIterator = AdsApp.adGroups().get();   while (adGroupIterator.hasNext()) {     var adGroup = adGroupIterator.next();     Logger.log("adGroup: ")     Logger.log(adGroup.getName());   } } function campaign(){   var campIter = AdsApp.campaigns().get();   while (campIter.hasNext()){     var ads = campIter.next().ads().get();     while(ads.hasNext()){       Logger.log(ads.next().getStatsFor("LAST_30_DAYS"));     }   } } function sheet() {   var sheetURL = "https://docs.google.com/spreadsheets/d/1W0zhRrQa1P7qjQf0eXXw-QzdcPKAlDPiVBOcIVEfDgw/edit#gid=1428103052";   var sheet = SpreadsheetApp.openByUrl(sheetURL); } function main(){   campaign();   adGroup();   productGroup(); } 

I then reached out to the Ads Script support team and found out that it is not possible. But they suggested that I can use Shopping Performance Report, Product Partition Report, shopping_performance_view or product_group_view. They are part of AdWord API, and I do not know how to work with them.

So, I am looking for a Google Ads Script that would help me get a list of products (with detailed statistics) from Googe Ads and I am stuck with how to use the above-mentioned AdWord reporting endpoints to do it.

Here is the list of products in my Google Ads Account. They are 107 products along with their statistics.

Please, help with at least comments, ideas, and suggestions, I can write code but I am not sure what I am missing on

Tag:google-ads-api, javascript, google-ads-script, google-apps-script, google-analytics-api

2 comments.

  1. adamjuraczarnecki

    You should use AdsApp.report() method and GAQL (very similar to sql) to query shopping_performance_view to extract interesting data. Here example in ES6 flavored js supported in Ads Scripts Beta

    const logShoppingProductsData = () => { const query = ` SELECT segments.product_item_id, segments.product_custom_attribute4, metrics.clicks, metrics.impressions FROM shopping_performance_view WHERE metrics.clicks > 100 and segments.product_custom_attribute4 != "undefined" ` const rows = AdsApp.report(query).rows() while(rows.hasNext()){ prod = rows.next() Logger.log(`${prod['segments.product_item_id']}, \t ${prod['segments.product_custom_attribute']}, \t ${prod['metrics.clicks']}, \t ${prod['metrics.impressions']}`) } } function main() { logShoppingProductsData() }

    then you can perform any logic with this informations.

    fields documentation: https://developers.google.com/google-ads/api/fields/v9/shopping_performance_view

    query builder and validator: https://developers.google.com/google-ads/api/fields/v9/shared_set_query_builder

    1. Aamir Khan Maarofi

      @adamczamecki, thank you for posting the answer. I had figured it out with the same approach after reaching out to Google Ads Group on Google Groups. But didn't find time to post back the solution for the community. This is how it works, yes. Really appreciate your effort.

Add a new comment.