AdSense Service

  • The AdSense service in Apps Script uses the AdSense Management API to allow users to access account structure information and run performance reports.

  • This is an advanced service that requires explicit enabling before it can be used.

  • Detailed information about the service, including objects, methods, and parameters, can be found in the reference documentation for the AdSense Management API.

  • Sample code is provided for common tasks like listing accounts, ad clients, and ad units, as well as generating reports.

The AdSense service allows you to use theAdSense Management API in Apps Script. This APIgives AdSense customers the ability to get information about the structureof their account and run reports on how it is performing.

Note: This is an advanced service that must beenabled before use.

Reference

For detailed information on this service, see thereference documentation for the AdSenseManagement API. Like all advanced services in Apps Script, the AdSense serviceuses the same objects, methods, and parameters as the public API. For more information, seeHow method signatures are determined.

To report issues and find other support, please ask on Stack Overflow using theadsense-api tag.

Sample code

The sample code below usesversion 2 ofthe API.

List accounts

This sample lists all of the accounts available to the user. The accounts arespecified as resource names, for example,accounts/pub-12345, that can be usedin other methods, such aslisting ad clients. Notice the useof page tokens to access the full list of results.

advanced/adsense.gs
/** * Lists available AdSense accounts. */functionlistAccounts(){letpageToken;do{constresponse=AdSense.Accounts.list({pageToken:pageToken});if(!response.accounts){console.log("No accounts found.");return;}for(constaccountofresponse.accounts){console.log('Found account with resource name "%s" and display name "%s".',account.name,account.displayName,);}pageToken=response.nextPageToken;}while(pageToken);}

List ad clients

This sample lists all of the ad clients for a given account. Specify the accountas a resource name, for example,accounts/pub-12345. You can get the accountresource name by using theList accounts sample code.

advanced/adsense.gs
/** * Logs available Ad clients for an account. * * @param {string} accountName The resource name of the account that owns the *     collection of ad clients. */functionlistAdClients(accountName){letpageToken;do{constresponse=AdSense.Accounts.Adclients.list(accountName,{pageToken:pageToken,});if(!response.adClients){console.log("No ad clients found for this account.");return;}for(constadClientofresponse.adClients){console.log('Found ad client for product "%s" with resource name "%s".',adClient.productCode,adClient.name,);console.log("Reporting dimension ID: %s",adClient.reportingDimensionId??"None",);}pageToken=response.nextPageToken;}while(pageToken);}

List ad units

This sample lists all of the ad units for a given ad client. Specify the adclient as a resource name, such asaccounts/pub-12345/adclients/ca-pub-12345.You can get the ad client resource name by using theList ad clients sample code.

advanced/adsense.gs
/** * Lists ad units. * @param {string} adClientName The resource name of the ad client that owns the collection *     of ad units. */functionlistAdUnits(adClientName){letpageToken;do{constresponse=AdSense.Accounts.Adclients.Adunits.list(adClientName,{pageSize:50,pageToken:pageToken,});if(!response.adUnits){console.log("No ad units found for this ad client.");return;}for(constadUnitofresponse.adUnits){console.log('Found ad unit with resource name "%s" and display name "%s".',adUnit.name,adUnit.displayName,);}pageToken=response.nextPageToken;}while(pageToken);}

Generate a report

This sample generates a report over your AdSense account and outputs theresults to a spreadsheet.

advanced/adsense.gs
/** * Generates a spreadsheet report for a specific ad client in an account. * @param {string} accountName The resource name of the account. * @param {string} adClientReportingDimensionId The reporting dimension ID *     of the ad client. */functiongenerateReport(accountName,adClientReportingDimensionId){// Prepare report.consttoday=newDate();constoneWeekAgo=newDate(today.getTime()-7*24*60*60*1000);constreport=AdSense.Accounts.Reports.generate(accountName,{// Specify the desired ad client using a filter.filters:[`AD_CLIENT_ID==${escapeFilterParameter(adClientReportingDimensionId)}`,],metrics:["PAGE_VIEWS","AD_REQUESTS","AD_REQUESTS_COVERAGE","CLICKS","AD_REQUESTS_CTR","COST_PER_CLICK","AD_REQUESTS_RPM","ESTIMATED_EARNINGS",],dimensions:["DATE"],...dateToJson("startDate",oneWeekAgo),...dateToJson("endDate",today),// Sort by ascending date.orderBy:["+DATE"],});if(!report.rows){console.log("No rows returned.");return;}constspreadsheet=SpreadsheetApp.create("AdSense Report");constsheet=spreadsheet.getActiveSheet();// Append the headers.sheet.appendRow(report.headers.map((header)=>header.name));// Append the results.sheet.getRange(2,1,report.rows.length,report.headers.length).setValues(report.rows.map((row)=>row.cells.map((cell)=>cell.value)));console.log("Report spreadsheet created: %s",spreadsheet.getUrl());}/** * Escape special characters for a parameter being used in a filter. * @param {string} parameter The parameter to be escaped. * @return {string} The escaped parameter. */functionescapeFilterParameter(parameter){returnparameter.replace("\\","\\\\").replace(",","\\,");}/** * Returns the JSON representation of a Date object (as a google.type.Date). * * @param {string} paramName the name of the date parameter * @param {Date} value the date * @return {object} formatted date */functiondateToJson(paramName,value){return{[`${paramName}.year`]:value.getFullYear(),[`${paramName}.month`]:value.getMonth()+1,[`${paramName}.day`]:value.getDate(),};}

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-11 UTC.