广告安排
广告安排作用于广告系列,使用CampaignCriterionService 。
你不但可以决定一周中的周几和开始时间、结束时间,还有bid modifier(每次都能增加或减少出价)
Note:一天小于六个时段
Code examples
// Obtain a campaignId you want to configure
Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID_HERE");
// Closed on Sunday, so we don't configure an AdSchedule for Sunday.
DayOfWeek[] days = new DayOfWeek[] {DayOfWeek.MONDAY,
DayOfWeek.TUESDAY,
DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY,
DayOfWeek.FRIDAY,
DayOfWeek.SATURDAY};
List<CampaignCriterionOperation> operations = new ArrayList<CampaignCriterionOperation>();
for (int i = 0; i < 6; i++) {
AdSchedule schedule = new AdSchedule();
schedule.setDayOfWeek(days[i]);
// Start at 8:45 am...
schedule.setStartHour(8);
schedule.setStartMinute(MinuteOfHour.FORTY_FIVE);
// ... and end at 7:45 pm
schedule.setEndHour(19);
schedule.setEndMinute(MinuteOfHour.FORTY_FIVE);
CampaignCriterionOperation operation = new CampaignCriterionOperation();
CampaignCriterion campaignCriterion = new CampaignCriterion();
campaignCriterion.setCampaignId(campaignId);
campaignCriterion.setCriterion(schedule);
// Run at normal bid rates
campaignCriterion.setBidModifier(1.0);
operation.setOperand(campaignCriterion);
operation.setOperator(Operator.ADD);
operations.add(operation);
}
CampaignCriterionReturnValue result =
campaignCriterionService.mutate(operations
.toArray(new CampaignCriterionOperation[operations.size()]));
In order to give customers fair warning about a special lunchtime deal, advertising would start early in the morning and increase significantly during the promotion hours:
// Obtain a campaignId you want to configure
Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID_HERE");
List<CampaignCriterionOperation> operations = new ArrayList<CampaignCriterionOperation>();
AdSchedule early = new AdSchedule();
AdSchedule peak = new AdSchedule();
CampaignCriterionOperation operationEarly = new CampaignCriterionOperation();
CampaignCriterion campaignCriterionEarly = new CampaignCriterion();
CampaignCriterionOperation operationPeak = new CampaignCriterionOperation();
CampaignCriterion campaignCriterionPeak = new CampaignCriterion();
// Sample schedule for Monday
early.setDayOfWeek(DayOfWeek.MONDAY);
peak.setDayOfWeek(DayOfWeek.MONDAY);
// Start at 8:00 am...
early.setStartHour(8);
early.setStartMinute(MinuteOfHour.ZERO);
// ... and run until promotion starts
early.setEndHour(12);
early.setEndMinute(MinuteOfHour.ZERO);
// Run at normal bid rates
campaignCriterionEarly.setBidModifier(1.0);
// Start higher bidding at noon...
peak.setStartHour(12);
peak.setStartMinute(MinuteOfHour.ZERO);
// ... and run until promotion ends...
peak.setEndHour(14);
peak.setEndMinute(MinuteOfHour.ZERO);
// ... at double the bid!
campaignCriterionPeak.setBidModifier(2.0);
campaignCriterionEarly.setCampaignId(campaignId);
campaignCriterionEarly.setCriterion(early);
campaignCriterionPeak.setCampaignId(campaignId);
campaignCriterionPeak.setCriterion(peak);
operationEarly.setOperand(campaignCriterionEarly);
operationEarly.setOperator(Operator.ADD);
operationPeak.setOperand(campaignCriterionPeak);
operationPeak.setOperator(Operator.ADD);
operations.add(operationEarly);
operations.add(operationPeak);
CampaignCriterionReturnValue result =
campaignCriterionService.mutate(operations
.toArray(new CampaignCriterionOperation[operations.size()]));
This example shows how you stop ads showing at a certain day. You need to send an AdSchedule with the same Id
as the existing AdSchedule.
// Suppose you already have a schedule of 8:45 am to 7:45 pm for Monday to Saturday
// Obtain the campaignId and criterionId you want to configure
Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID_HERE");
Long criterionIdForSaturday = Long.valueOf("INSERT_CRITERION_ID_HERE");
List<CampaignCriterionOperation> removeOperations = new ArrayList<CampaignCriterionOperation>();
// Remove a schedule for Saturday
AdSchedule removeScheduleForSaturday = new AdSchedule();
removeScheduleForSaturday.setId(criterionIdForSaturday);
CampaignCriterionOperation removeOperation = new CampaignCriterionOperation();
CampaignCriterion removeCampaignCriterion = new CampaignCriterion();
removeCampaignCriterion.setCampaignId(campaignId);
removeCampaignCriterion.setCriterion(removeScheduleForSaturday);
removeOperation.setOperand(removeCampaignCriterion);
removeOperation.setOperator(Operator.REMOVE);
removeOperations.add(removeOperation);
CampaignCriterionReturnValue removeResult = campaignCriterionService.mutate(
removeOperations.toArray(new CampaignCriterionOperation[removeOperations.size()]));
This example shows how you change the time ads are showing. You need to remove the existing AdSchedule first, then send a new one.
// Suppose you already have a schedule of 8:45 am to 7:45 pm for Monday to Saturday
// Obtain the campaignId and criterionId you want to configure
Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID_HERE");
Long criterionIdForFriday = Long.valueOf("INSERT_CRITERION_ID_HERE");
List<CampaignCriterionOperation> operations = new ArrayList<CampaignCriterionOperation>();
// Remove a schedule for Friday first
AdSchedule removeScheduleForFriday = new AdSchedule();
removeScheduleForFriday.setId(criterionIdForFriday);
CampaignCriterionOperation removeOperationForFriday = new CampaignCriterionOperation();
CampaignCriterion removeCampaignCriterionForFriday = new CampaignCriterion();
removeCampaignCriterionForFriday.setCampaignId(campaignId);
removeCampaignCriterionForFriday.setCriterion(removeScheduleForFriday);
removeOperationForFriday.setOperand(removeCampaignCriterionForFriday);
removeOperationForFriday.setOperator(Operator.REMOVE);
operations.add(removeOperationForFriday);
// Create a new schedule for Friday
AdSchedule addScheduleForFriday = new AdSchedule();
addScheduleForFriday.setDayOfWeek(DayOfWeek.FRIDAY);
// Start at 3:00 pm...
addScheduleForFriday.setStartHour(15);
addScheduleForFriday.setStartMinute(MinuteOfHour.ZERO);
// ... and end at 7:45 pm
addScheduleForFriday.setEndHour(19);
addScheduleForFriday.setEndMinute(MinuteOfHour.FORTY_FIVE);
CampaignCriterionOperation addOperationForFriday = new CampaignCriterionOperation();
CampaignCriterion campaignAddCriterionForFriday = new CampaignCriterion();
campaignAddCriterionForFriday.setCampaignId(campaignId);
campaignAddCriterionForFriday.setCriterion(addScheduleForFriday);
// Run at normal bid rates
campaignAddCriterionForFriday.setBidModifier(1.0);
addOperationForFriday.setOperand(campaignAddCriterionForFriday);
addOperationForFriday.setOperator(Operator.ADD);
operations.add(addOperationForFriday);
CampaignCriterionReturnValue result = campaignCriterionService.mutate(
removeOperations.toArray(new CampaignCriterionOperation[operations.size()]));