Ad Params
Stay organized with collections
Save and categorize content based on your preferences.
Create text ad with ad parameters for an ad group
function
setupAdParamsInAdGroup
(
adGroupName
)
{
//
If
you
have
multiple
adGroups
with
the
same
name
,
this
snippet
will
//
pick
an
arbitrary
matching
ad
group
each
time
.
In
such
cases
,
just
//
filter
on
the
campaign
name
as
well
:
//
//
AdsApp
.
adGroups
()
//
.
withCondition
(
'ad_group.name = "INSERT_ADGROUP_NAME_HERE"'
)
//
.
withCondition
(
'campaign.name = "INSERT_CAMPAIGN_NAME_HERE"'
)
const
adGroupIterator
=
AdsApp
.
adGroups
()
.
withCondition
(
`
ad_group
.
name
=
"${adGroupName}"
`
)
.
get
();
if
(
!
adGroupIterator
.
hasNext
())
{
throw
new
Error
(
`
No
ad
group
with
name
"${adGroupName} found`);
}
const
adGroup
=
adGroupIterator
.
next
();
adGroup
.
newAd
()
.
expandedTextAdBuilder
()
.
withHeadlinePart1
(
'Holiday sale'
)
.
withHeadlinePart2
(
'Starts in {param1: a few} days {param2: and} hours!'
)
.
withDescription
(
'Everything must go!'
)
.
withFinalUrl
(
'http://www.example.com/holidaysales'
)
.
build
();
const
keywordIterator
=
adGroup
.
keywords
()
.
get
();
if
(
!
keywordIterator
.
hasNext
())
{
console
.
log
(
`
No
keywords
found
in
ad
group
$
{
adGroupName
}
.
`
);
}
else
{
const
keyword
=
keywordIterator
.
next
();
//
Setup
Ad
to
show
as
'Doors open in 5 days, 7 hours!'
when
searched
//
using
this
keyword
.
If
the
ad
is
triggered
using
a
keyword
//
without
ad
param
,
the
ad
shows
as
//
'Doors open in a few days, and hours!'
keyword
.
setAdParam
(
1
,
5
);
keyword
.
setAdParam
(
2
,
7
);
}
}
Get ad parameters for a keyword
function
getAdParamsForKeyword
(
adGroupName
)
{
//
If
you
have
multiple
adGroups
with
the
same
name
,
this
snippet
will
//
pick
an
arbitrary
matching
ad
group
each
time
.
In
such
cases
,
just
//
filter
on
the
campaign
name
as
well
:
//
//
AdsApp
.
adGroups
()
//
.
withCondition
(
'ad_group.name = "INSERT_ADGROUP_NAME_HERE"'
)
//
.
withCondition
(
'campaign.name = "INSERT_CAMPAIGN_NAME_HERE"'
)
const
adGroupIterator
=
AdsApp
.
adGroups
()
.
withCondition
(
`
ad_group
.
name
=
"${adGroupName}"
`
)
.
get
();
if
(
!
adGroupIterator
.
hasNext
())
{
throw
new
Error
(
`
No
ad
group
with
name
"${adGroupName} found`);
}
const
adGroup
=
adGroupIterator
.
next
();
const
keywordIterator
=
adGroup
.
keywords
()
.
withCondition
(
'ad_group_criterion.keyword.text = "Holiday sales"'
)
.
get
();
if
(
!
keywordIterator
.
hasNext
())
{
console
.
log
(
`
No
keywords
found
in
ad
group
$
{
adGroupName
}
.
`
);
}
else
{
const
keyword
=
keywordIterator
.
next
();
const
adParamIterator
=
keyword
.
adParams
()
.
get
();
for
(
const
adParam
of
adParamIterator
)
{
logAdParam
(
adParam
);
}
}
}
function
logAdParam
(
adParam
)
{
console
.
log
(
'Keyword : '
+
adParam
.
getKeyword
()
.
getText
());
console
.
log
(
'MatchType : '
+
adParam
.
getKeyword
()
.
getMatchType
());
console
.
log
(
'Index : '
+
adParam
.
getIndex
());
console
.
log
(
'Insertion Text : '
+
adParam
.
getInsertionText
());
}
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License
, and code samples are licensed under the Apache 2.0 License
. For details, see the Google Developers Site Policies
. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-20 UTC.
[[["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-20 UTC."],[[["\u003cp\u003eThe provided code snippets demonstrate how to create and manage ad parameters within Google Ads, allowing for dynamic text insertion in ads based on specific keywords.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003esetupAdParamsInAdGroup\u003c/code\u003e creates a new expanded text ad with placeholders (\u003ccode\u003e{param1}\u003c/code\u003e, \u003ccode\u003e{param2}\u003c/code\u003e) and sets corresponding ad parameters for a keyword, enabling customized ad copy when that keyword triggers the ad.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003egetAdParamsForKeyword\u003c/code\u003e retrieves and logs the ad parameters associated with a specific keyword within a given ad group, showcasing how to access and utilize these parameters for analysis or reporting.\u003c/p\u003e\n"]]],[],null,["# Ad Params\n\nCreate text ad with ad parameters for an ad group\n-------------------------------------------------\n\n```gdscript\nfunction setupAdParamsInAdGroup(adGroupName) {\n // If you have multiple adGroups with the same name, this snippet will\n // pick an arbitrary matching ad group each time. In such cases, just\n // filter on the campaign name as well:\n //\n // AdsApp.adGroups()\n // .withCondition('ad_group.name = \"INSERT_ADGROUP_NAME_HERE\"')\n // .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n const adGroupIterator = AdsApp.adGroups()\n .withCondition(`ad_group.name = \"${adGroupName}\"`)\n .get();\n if (!adGroupIterator.hasNext()) {\n throw new Error(`No ad group with name \"${adGroupName} found`);\n }\n const adGroup = adGroupIterator.next();\n\n adGroup.newAd().expandedTextAdBuilder()\n .withHeadlinePart1('Holiday sale')\n .withHeadlinePart2(\n 'Starts in {param1: a few} days {param2: and} hours!')\n .withDescription('Everything must go!')\n .withFinalUrl('http://www.example.com/holidaysales')\n .build();\n\n const keywordIterator = adGroup.keywords().get();\n if (!keywordIterator.hasNext()) {\n console.log(`No keywords found in ad group ${adGroupName}.`);\n } else {\n const keyword = keywordIterator.next();\n // Setup Ad to show as 'Doors open in 5 days, 7 hours!' when searched\n // using this keyword. If the ad is triggered using a keyword\n // without ad param, the ad shows as\n // 'Doors open in a few days, and hours!'\n keyword.setAdParam(1, 5);\n keyword.setAdParam(2, 7);\n }\n}\n```\n\nGet ad parameters for a keyword\n-------------------------------\n\n```gdscript\nfunction getAdParamsForKeyword(adGroupName) {\n // If you have multiple adGroups with the same name, this snippet will\n // pick an arbitrary matching ad group each time. In such cases, just\n // filter on the campaign name as well:\n //\n // AdsApp.adGroups()\n // .withCondition('ad_group.name = \"INSERT_ADGROUP_NAME_HERE\"')\n // .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n const adGroupIterator = AdsApp.adGroups()\n .withCondition(`ad_group.name = \"${adGroupName}\"`)\n .get();\n if (!adGroupIterator.hasNext()) {\n throw new Error(`No ad group with name \"${adGroupName} found`);\n }\n const adGroup = adGroupIterator.next();\n const keywordIterator = adGroup.keywords()\n .withCondition('ad_group_criterion.keyword.text = \"Holiday sales\"')\n .get();\n if (!keywordIterator.hasNext()) {\n console.log(`No keywords found in ad group ${adGroupName}.`);\n } else {\n const keyword = keywordIterator.next();\n const adParamIterator = keyword.adParams().get();\n for (const adParam of adParamIterator) {\n logAdParam(adParam);\n }\n }\n}\n\nfunction logAdParam(adParam) {\n console.log('Keyword : ' + adParam.getKeyword().getText());\n console.log('MatchType : ' + adParam.getKeyword().getMatchType());\n console.log('Index : ' + adParam.getIndex());\n console.log('Insertion Text : ' + adParam.getInsertionText());\n}\n```"]]