Google Ads
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
확장 텍스트 광고 추가
function addExpandedTextAd(adGroupName,campaignName) {
const campaignIterator = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
if (!campaignIterator.hasNext()){
throw new error (`No campaign found with name: "${campaignname}"`);
}
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()){
throw new error (`No ad group found with name: "${adGroupName}"`);
}
const adGroup = adGroupIterator.next();
adGroup.newAd().expandedTextAdBuilder()
.withHeadlinePart1('First headline of ad')
.withHeadlinePart2('Second headline of ad')
.withHeadlinePart3('Third headline of ad')
.withDescription('First Ad description')
.withDescription2('Second Ad description')
.withPath1('path1')
.withPath2('path2')
.withFinalUrl('http://www.example.com')
.build();
// ExpandedTextAdBuilder has additional options.
// For more details, see
// https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_expandedtextadbuilder
}
이미지 광고 추가
function addImageAd(adGroupName,imageUrl,imageName) {
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const mediaOperation = AdsApp.adMedia().newImageBuilder()
.withName(`${imageName}`)
.withData(imageBlob)
.build();
const image = mediaOperation.getResult();
if (!image.isSuccessful()) {
throw new Error(`Media could not be created from url: "${imageUrl}"`)
}
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: "${adGroupName}"`);
}
if (adGroupIterator.totalNumEntities() > 1) {
console.warn(`Multiple ad groups named "${name}" found. Using the one
from campaign "${adGroup.getCampaign().getName()}".`);
}
const mediaIterator = AdsApp.adMedia().media()
.withCondition(`media_file.name = "${imageName}"`)
.get();
if (!mediaIterator.hasNext()) {
throw new Error(`No media found with name: "${imageName}"`);
}
const adGroup = adGroupIterator.next();
const image2 = mediaIterator.next();
adGroup.newAd().imageAdBuilder()
.withName('Ad name')
.withImage(image2)
.withDisplayUrl('http://www.example.com')
.withFinalUrl('http://www.example.com')
.build();
// ImageAdBuilder has additional options.
// For more details, see
// https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_imageadbuilder
}
반응형 디스플레이 광고 추가
// You create responsive display ads in two steps:
// 1. Create or retrieve assets (marketing images, square marketing images,
// optional logos, optional landscape logos, and optional YouTube videos)
// 2. Create the ad.
//
// The following function assumes you have not already created named assets.
function addResponsiveDisplayAd(campaignName,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 = "${adGroupName}"`)
// .withCondition(`campaign.name = "${campaignName}"`)
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: ${adGroupName}`);
}
// If you have already created named image assets, select them like this:
//
// const marketingImages = [];
// const marketingImageIterator = AdsApp.adAssets()
// .assets()
// .withCondition(`ad_group_ad.ad.name IN ("INSERT_FIRST_ASSET_NAME_HERE",
// "INSERT_SECOND_ASSET_NAME_HERE")`)
// .get();
// while (marketingImageIterator.hasNext()) {
// marketingImages.push(marketingImageIterator.next());
// }
const adGroup = adGroupIterator.next();
const adGroupBuilder = adGroup.newAd()
.responsiveDisplayAdBuilder()
.withBusinessName('Your business name')
.withFinalUrl('http://www.example.com')
.withHeadlines(['First headline', 'Second headline'])
.withLongHeadline('Long Headline')
.withDescriptions(
['First description', 'Second description', 'Third description']);
// If you selected assets with a snippet as shown above, then provide those
// assets here like this:
//
// adGroupBuilder = adGroupBuilder.withMarketingImages(marketingImages);
adGroupBuilder
.addMarketingImage(
buildImageAsset("rectangular image asset", "https://goo.gl/3b9Wfh"))
.addSquareMarketingImage(
buildImageAsset("square image asset", "https://goo.gl/mtt54n"))
.build();
// ResponsiveDisplayAdBuilder has additional options.
// For more details, see
// https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_responsivedisplayadbuilder
}
function buildImageAsset(assetName, imageUrl) {
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
return AdsApp.adAssets().newImageAssetBuilder()
.withData(imageBlob)
.withName(assetName)
.build()
.getResult();
}
광고그룹에서 광고 일시중지
function pauseAdInAdGroup(adGroupName) {
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: "${adGroupName}"`);
}
const adGroup = adGroupIterator.next();
const adsIterator = adGroup.ads().get();
if (!adsIterator.hasNext()) {
throw new Error(`No ads found in ad group: "${adGroupName}"`);
}
const ad = adsIterator.next();
ad.pause();
}
광고그룹의 확장 텍스트 광고 이터레이터 가져오기
function getExpandedTextAdsIteratorInAdGroup(adGroupName) {
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: "${adGroupName}"`);
}
const adGroup = adGroupIterator.next();
// You can filter for ads of a particular type, using the AdType selector.
// See https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_ad#getType_0
// for possible values.
const expandedTextAdsIterator = adGroup.ads()
.withCondition(`ad_group_ad.ad.type = "EXPANDED_TEXT_AD"`)
.get();
if (!expandedTextAdsIterator.hasNext()) {
throw new Error(`No expanded text ads found in ad group: "${adGroupName}"`);
}
return expandedTextAdsIterator;
}
광고그룹의 텍스트 광고 이터레이터 가져오기
function getTextAdsIteratorInAdGroup(adGroupName) {
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: "${adGroupName}"`);
}
const adGroup = adGroupIterator.next();
// You can filter for ads of a particular type, using the AdType selector.
// See https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_ad#getType_0
// for possible values.
const textAdsIterator = adGroup.ads()
.withCondition(`ad_group_ad.ad.type = "TEXT_AD"`)
.get();
if (!textAdsIterator.hasNext()) {
throw new Error(`No text ads found in ad group: "${adGroupName}"`);
}
return textAdsIterator;
}
광고그룹에 있는 광고 통계 가져오기
function getAdGroupAdStats(adGroupName) {
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: "${adGroupName}"`);
}
const adGroup = adGroupIterator.next();
// If you want to restrict your search to some ads only, then you could
// apply a label and retrieve ads as
//
// const label = AdsApp.labels()
// .withCondition(`ad_group_ad_label.name ="INSERT_LABEL_NAME_HERE"`)
// .get()
// .next();
// const adsIterator = label.ads().get();
const adsIterator = adGroup.ads().get();
if (!adsIterator.hasNext()) {
throw new Error(`No ads found in ad group: "${adGroupName}"`);
}
const ad = adsIterator.next();
// You can also request reports for pre-defined date ranges. See
// https://developers.google.com/google-ads/api/docs/query/date-ranges
// DateRangeLiteral section for possible values.
const stats = ad.getStatsFor('LAST_MONTH');
console.log(`${adGroup.getName()},
${stats.getClicks()},
${stats.getImpressions()}`);
}
광고 그룹에 반응형 디스플레이 광고 가져오기
function getResponsiveDisplayAdIteratorInAdGroup(adGroupName) {
const adGroupIterator = AdsApp.adGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!adGroupIterator.hasNext()) {
throw new Error(`No ad group found with name: ${adGroupName}`);
}
const adGroup = adGroupIterator.next();
const responsiveDisplayAdsIterator = adGroup.ads()
.withCondition(`ad_group_ad.ad.type IN ("RESPONSIVE_DISPLAY_AD",
"LEGACY_RESPONSIVE_DISPLAY_AD")`)
.get();
if (!responsiveDisplayAdsIterator.hasNext()) {
throw new Error(`No Responsive Display ads found in ad group:
"${adGroupName}"`);
}
return responsiveDisplayAdsIterator;
}
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-08-21(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-08-21(UTC)"],[[["The provided Google Ads scripts demonstrate how to manage ads, including creating various ad types like Expanded Text Ads, Image Ads, and Responsive Display Ads within specified ad groups and campaigns."],["The scripts enable functionalities such as pausing ads, retrieving iterators for different ad types (Expanded Text Ads, Text Ads, Responsive Display Ads), and fetching performance statistics for ads within a given ad group."],["The scripts use error handling to ensure smooth execution and provide informative messages when issues like missing campaigns, ad groups, or ads are encountered."],["The scripts leverage Google Ads API functionalities for managing ad assets, building ads with specific attributes, and accessing performance data for reporting purposes."],["The scripts are designed to be modular and reusable, allowing for customization and integration into larger Google Ads management workflows."]]],[]]