Truy lục tất cả chiến dịch video
function getAllVideoCampaigns() {
// AdsApp.videoCampaigns() will return all campaigns that are not
// removed by default.
const videoCampaignIterator = AdsApp.videoCampaigns().get();
console.log(`Total campaigns found : ${videoCampaignIterator.totalNumEntities()}`);
return videoCampaignIterator;
}
Cách sử dụng
const videoCampaigns = getAllVideoCampaigns();
for (const videoCampaign of videoCampaigns) {
// Process your campaign.
}
Truy lục chiến dịch video theo tên
function getVideoCampaignByName(campaignName) {
const videoCampaignIterator = AdsApp.videoCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
if (!videoCampaignIterator.hasNext()) {
throw new Error(`No video campaign with name ${campaignName} found.`);
}
const videoCampaign = videoCampaignIterator.next();
console.log(`Campaign Name: ${videoCampaign.getName()}`);
console.log(`Enabled: ${videoCampaign.isEnabled()}`);
console.log(`Bidding strategy: ${videoCampaign.getBiddingStrategyType()}`);
console.log(`Ad rotation: ${videoCampaign.getAdRotationType()}`);
console.log(`Start date: ${formatDate(videoCampaign.getStartDate())}`);
console.log(`End date: ${formatDate(videoCampaign.getEndDate())}`);
return videoCampaign;
}
function formatDate(date) {
function zeroPad(number) { return Utilities.formatString('%02d', number); }
return (date == null) ? 'None' : zeroPad(date.year) + zeroPad(date.month) +
zeroPad(date.day);
}
Truy lục thống kê của chiến dịch video
function getVideoCampaignStats(campaignName) {
const videoCampaignIterator = AdsApp.videoCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
if (!videoCampaignIterator.hasNext()) {
throw new Error(`No video campaign with name ${campaignName} found.`);
}
const videoCampaign = videoCampaignIterator.next();
// Fetch stats for the last month. See the DateRangeLiteral section at
// https://developers.google.com/google-ads/api/docs/query/date-ranges#predefined_date_range
// for possible values.
// Note: Reports can also be used to fetch stats. See
// https://developers.google.com/google-ads/scripts/docs/features/reports
// for more information.
var stats = videoCampaign.getStatsFor('LAST_MONTH');
console.log(`${videoCampaign.getName()}, ${stats.getImpressions()} impressions, ` +
`${stats.getViews()} views`);
return stats;
}
Tạm dừng chiến dịch video
function pauseVideoCampaign(campaignName) {
const videoCampaignIterator = AdsApp.videoCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
if (videoCampaignIterator.hasNext()) {
const videoCampaign = videoCampaignIterator.next();
videoCampaign.pause();
}
}
Thêm nhóm quảng cáo video
function addVideoAdGroup(campaignName, adGroupName) {
const videoCampaignIterator = AdsApp.videoCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
if (videoCampaignIterator.hasNext()) {
const videoCampaign = videoCampaignIterator.next();
const videoAdGroupOperation = videoCampaign.newVideoAdGroupBuilder()
.withName(adGroupName)
// This can also be:
// * VIDEO_EFFICIENT_REACH
// * VIDEO_NON_SKIPPABLE_IN_STREAM
// * VIDEO_RESPONSIVE
// * VIDEO_TRUE_VIEW_IN_DISPLAY
// Some types may only be usable in specific ad group types.
.withAdGroupType('VIDEO_TRUE_VIEW_IN_STREAM')
.withCpv(1.2)
.build();
}
}
Cập nhật nhóm quảng cáo video
function updateAdGroup(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (videoAdGroupIterator.hasNext()) {
const videoAdGroup = videoAdGroupIterator.next();
videoAdGroup.bidding().setCpv(1.2);
// update other properties as required here
}
}
Truy lục tất cả các nhóm quảng cáo video
function getAllVideoAdGroups() {
// AdsApp.videoAdGroups() will return all ad groups that are not removed by
// default.
const videoAdGroupIterator = AdsApp.videoAdGroups().get();
console.log(`Total adGroups found : ${videoAdGroupIterator.totalNumEntities()}`);
return videoAdGroupIterator;
}
Truy lục nhóm quảng cáo video theo tên
function getVideoAdGroupByName(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!videoAdGroupIterator.hasNext()) {
throw new Error(`No video ad group found with name ${adGroupName}.`);
}
const videoAdGroup = videoAdGroupIterator.next();
console.log('AdGroup Name: ' + videoAdGroup.getName());
console.log('AdGroup Type: ' + videoAdGroup.getAdGroupType());
console.log('Enabled: ' + videoAdGroup.isEnabled());
return videoAdGroup;
}
Truy lục thống kê của nhóm quảng cáo video
function getVideoAdGroupStats(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!videoAdGroupIterator.hasNext()) {
throw new Error(`No video ad group found with name ${adGroupName}.`);
}
const videoAdGroup = videoAdGroupIterator.next();
// You can also request reports for pre-defined date ranges. See
// https://developers.google.com/google-ads/api/docs/query/date-ranges#predefined_date_range
// for possible values.
const stats = videoAdGroup.getStatsFor('LAST_MONTH');
console.log(`${videoAdGroup.getName()}, ${stats.getImpressions()}, ${stats.getViews()}`);
return stats;
}
Tạm dừng nhóm quảng cáo video
function pauseVideoAdGroup(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!videoAdGroupIterator.hasNext()) {
throw new Error(`No video ad group found with name ${adGroupName}.`);
}
const videoAdGroup = videoAdGroupIterator.next();
videoAdGroup.pause();
console.log(`AdGroup with name: ${videoAdGroup.getName()} ` +
`has paused status: ${videoAdGroup.isPaused()}`);
}
Truy lục bất kỳ video nào để sử dụng trong quảng cáo
function getVideo() {
// This will just get the first valid YouTube video in the account.
// It demonstrates how to filter to see if a video is valid for video ads.
const videos = AdsApp.adAssets().assets()
.withCondition("asset.type = YOUTUBE_VIDEO")
.get();
for (const video of videos) {
// You have to use a YouTube video for True View ads, so only return if
// the YouTubeVideoId exists.
if(video.getYouTubeVideoId()) {
return video;
}
}
return null;
}
Truy lục một video cụ thể để sử dụng trong quảng cáo
function getVideoByYouTubeId(youTubeVideoId) {
// You can filter on the YouTubeVideoId if you already have that video in
// your account to fetch the exact one you want right away.
const videos = AdsApp.adAssets().assets()
.withCondition(`asset.type = YOUTUBE_VIDEO AND ` +
`asset.youtube_video_asset.youtube_video_id = '${youTubeVideoId}'`)
.get();
if (videos.hasNext()) {
return videos.next();
}
return null;
}
Thêm quảng cáo trong video
function addInStreamVideoAd(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.videoAdGroups()
// .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
// .withCondition('CampaignName = "INSERT_CAMPAIGN_NAME_HERE"')
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
const video = getVideo(); // Defined above
if (videoAdGroupIterator.hasNext()) {
const videoAdGroup = videoAdGroupIterator.next();
videoAdGroup.newVideoAd().inStreamAdBuilder()
.withAdName("In Stream Ad")
.withDisplayUrl("http://www.example.com")
.withFinalUrl("http://www.example.com")
.withVideo(video)
.build();
}
}
Thêm quảng cáo dạng video trong nguồn cấp dữ liệu
function addInFeedVideoAd(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
const video = getVideo(); // Defined above
if (videoAdGroupIterator.hasNext()) {
const videoAdGroup = videoAdGroupIterator.next();
videoAdGroup.newVideoAd().inFeedAdBuilder()
.withAdName("In-Feed Video Ad")
.withDescription1("Description line 1")
.withDescription2("Description line 2")
.withHeadline("Headline")
.withThumbnail("DEFAULT_THUMBNAIL")
.withVideo(video)
.build();
}
}
Tạm dừng quảng cáo video trong nhóm quảng cáo video
function pauseVideoAdsInVideoAdGroup(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (videoAdGroupIterator.hasNext()) {
const videoAdGroup = videoAdGroupIterator.next();
const videoAdsIterator = videoAdGroup.videoAds().get();
for (const videoAd of videoAdsIterator) {
videoAd.pause();
}
}
}
Truy lục quảng cáo video trong nhóm quảng cáo video
function getInStreamAdsInVideoAdGroup(adGroupName) {
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (!videoAdGroupIterator.hasNext()) {
throw new Error(`No video ad group found with name ${adGroupName}.`);
}
const videoAdGroup = videoAdGroupIterator.next();
const videoAdsIterator = videoAdGroup.videoAds()
.withCondition('Type="TRUE_VIEW_IN_STREAM_VIDEO_AD"').get();
console.log(`Total ads found : ${videoAdsIterator.totalNumEntities()}`);
return videoAdsIterator;
}
function logVideoAd(videoAd) {
// Note that not all fields are populated for both video ad types.
console.log('Video ID : ' + videoAd.getVideoId());
console.log('Headline : ' + videoAd.getHeadline());
console.log('Line1 : ' + videoAd.getDescription1());
console.log('Line2 : ' + videoAd.getDescription2());
console.log('Final URL : ' + videoAd.urls().getFinalUrl());
console.log('Display URL : ' + videoAd.getDisplayUrl());
console.log('Destination Page : ' + videoAd.getDestinationPage());
console.log('Approval Status : ' + videoAd.getApprovalStatus());
console.log('Enabled : ' + videoAd.isEnabled());
}
Truy lục số liệu thống kê quảng cáo từ một nhóm quảng cáo video
function getVideoAdGroupAdStats(adGroupName) {
let statsList = [];
const videoAdGroupIterator = AdsApp.videoAdGroups()
.withCondition(`ad_group.name = "${adGroupName}"`)
.get();
if (videoAdGroupIterator.hasNext()) {
const videoAdGroup = videoAdGroupIterator.next();
const videoAdsIterator = videoAdGroup.videoAds().get();
for (const videoAd of videoAdsIterator) {
// You can also request reports for pre-defined date ranges. See
// https://developers.google.com/google-ads/api/docs/query/date-ranges#predefined_date_range
// for possible values.
const stats = videoAd.getStatsFor('LAST_MONTH');
console.log(`${videoAdGroup.getName()}, ${stats.getViews()}, ${stats.getImpressions()}`);
statsList.push(stats);
}
}
return statsList;
}
Thêm đối tượng đang cân nhắc mua hàng vào nhóm quảng cáo video
function addInMarketAudienceToVideoAdGroup() {
const ag = AdsApp.videoAdGroups()
.withCondition('campaign.status != REMOVED')
.get()
.next();
console.log(`AdGroup ID ${ag.getId()}, Campaign ID ${ag.getVideoCampaign().getId()}`);
// Get the audience ID from the list here:
// https://developers.google.com/google-ads/api/reference/data/codes-formats#in-market-categories
const audience = ag.videoTargeting()
.newAudienceBuilder()
.withAudienceId(80428)
.withAudienceType('USER_INTEREST')
.build();
console.log('Added Audience ID %s', audience.getResult().getId().toString());
const audiences = ag.videoTargeting().audiences().get();
for (const aud of audiences) {
console.log('Retrieved Audience ID %s', aud.getId().toString());
}
}