Stay organized with collections
Save and categorize content based on your preferences.
Selectors help the programmer construct the query that fetches requested
Google Ads entities. With selectors, one can narrow down the list of
retrieved entities and order it. Most selectors have the following
methods:
withCondition()
Adds a condition to a selector. If multiple conditions are used, they are
AND-ed together, in other words, the selector will only return entities that
satisfy all of the specified conditions.
withIds()
Adds a collection of IDs as a
condition. An ID-based condition will be AND-ed together with all the others.
forDateRange()
Is needed when a condition or ordering clause references a
Stats field, such as
Ctr or Impressions. If you request all campaigns with over 100 impressions,
Google Ads scripts will need to know the date range to look into.
orderBy()
Specifies the ordering of the returned entities.
withLimit()
Limits the number of returned entities to the specified value. It is
particularly useful in conjunction with orderBy() in order to fetch things
like "10 keywords with most impressions yesterday". By default, all selectors
will set the limit to 50,000. You can increase the limit by manually specifying
a limit.
These methods can be called in any order. One exception is orderBy(), where
order of calls indeed matters: multiple calls to this method will specify
multiple ordering clauses, and they will apply in order. Consider the
following snippet:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eSelectors in Google Ads scripts are used to retrieve specific entities like campaigns or keywords by constructing queries.\u003c/p\u003e\n"],["\u003cp\u003eSelectors offer methods like \u003ccode\u003ewithCondition()\u003c/code\u003e, \u003ccode\u003ewithIds()\u003c/code\u003e, \u003ccode\u003eforDateRange()\u003c/code\u003e, \u003ccode\u003eorderBy()\u003c/code\u003e, and \u003ccode\u003ewithLimit()\u003c/code\u003e to refine and order results.\u003c/p\u003e\n"],["\u003cp\u003eMultiple conditions added using \u003ccode\u003ewithCondition()\u003c/code\u003e are treated as AND conditions, requiring entities to satisfy all of them.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eorderBy()\u003c/code\u003e allows sorting results based on specified criteria, and calling it multiple times adds further ordering levels.\u003c/p\u003e\n"],["\u003cp\u003eChaining selector methods simplifies code and enhances readability by applying multiple operations in a single statement.\u003c/p\u003e\n"]]],[],null,["# Selectors help the programmer construct the query that fetches requested\nGoogle Ads entities. With selectors, one can narrow down the list of\nretrieved entities and order it. Most selectors have the following\nmethods:\n\n`withCondition()`\n: Adds a condition to a selector. If multiple conditions are used, they are\n AND-ed together, in other words, the selector will only return entities that\n satisfy **all** of the specified conditions.\n\n`withIds()`\n: Adds a collection of [IDs](/google-ads/scripts/docs/concepts/ids) as a\n condition. An ID-based condition will be AND-ed together with all the others.\n\n`forDateRange()`\n: Is needed when a condition or ordering clause references a\n [Stats](/google-ads/scripts/docs/reference/adsapp/adsapp_stats) field, such as\n Ctr or Impressions. If you request all campaigns with over 100 impressions,\n Google Ads scripts will need to know the date range to look into.\n\n`orderBy()`\n: Specifies the ordering of the returned entities.\n\n`withLimit()`\n: Limits the number of returned entities to the specified value. It is\n particularly useful in conjunction with `orderBy()` in order to fetch things\n like \"10 keywords with most impressions yesterday\". By default, all selectors\n will set the limit to 50,000. You can increase the limit by manually specifying\n a limit.\n\nThese methods can be called in any order. One exception is `orderBy()`, where\norder of calls indeed matters: multiple calls to this method will specify\nmultiple ordering clauses, and they will apply in order. Consider the\nfollowing snippet: \n\n selector = selector.forDateRange(\"LAST_14_DAYS\")\n .orderBy(\"metrics.clicks DESC\")\n .orderBy(\"metrics.ctr ASC\");\n\nThe results will be ordered by Clicks in descending order. Results with equal\nClicks values will be ordered by Ctr in ascending order.\n\nCalls to a selector's methods can be chained together. The following code \n\n var campaignSelector = AdsApp.campaigns();\n campaignSelector.withCondition(\"metrics.clicks \u003e 10\");\n campaignSelector.withCondition(\"metrics.impressions \u003e 1000\");\n campaignSelector.orderBy(\"metrics.impressions DESC\");\n campaignSelector.forDateRange(\"YESTERDAY\");\n\ncan be re-written in a more compact fashion: \n\n var campaignSelector = AdsApp.campaigns()\n .withCondition(\"metrics.clicks \u003e 10\")\n .withCondition(\"metrics.impressions \u003e 1000\")\n .orderBy(\"metrics.impressions DESC\")\n .forDateRange(\"YESTERDAY\");\n\nOnce the selector is constructed, one can obtain an\n[Iterator](/google-ads/scripts/docs/concepts/iterators) from it by calling\n`selector.get()`.\n| **Note:** Some selectors (for example [`AdParamSelector`](/google-ads/scripts/docs/reference/adsapp/adsapp_adparamselector) and [`LabelSelector`](/google-ads/scripts/docs/reference/adsapp/adsapp_labelselector)) expose fewer methods since they operate on entities that are more restricted (don't have any stats or meaningful fields to order by).\n\nRead [Best Practices](/google-ads/scripts/docs/best-practices) for tips\nand tricks on efficient selector usage."]]