広告
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
拡張テキスト広告を追加する
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;
}
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は 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."]]],[]]