2013年3月30日,星期六

根据您的棒球队的日程安排自动化广告

我知道现在每个人都将注意力集中在疯狂三月,但是棒球赛季的开幕日指日可待。我想知道是否可以根据您当地的MLB团队的时间表启用和禁用特定广告。

事实证明,美国职业棒球大联盟以易于解析的CSV格式提供了每个团队的完整时间表。您需要做的就是在Google中搜索“ 可下载的时间表”,然后找到以“ downloadable.jsp”结尾的页面。看起来像这样:


您需要的链接在上图中被圈出。您可以从网址中看到以下代码中的team_id值。而且,如果右键单击并下载该.csv文件,您还将能够看到用于home_field的值。在下面的示例中,我使用了家乡的小熊队和白袜队,但是您可以使用任何想要的球队。

脚本本身将运行并为您的团队寻找主场比赛。如果团队今天在比赛并且是主场比赛,它将启用所有在TEAM_INFO中配置的带有标签的广告。如果团队今天不参加主场比赛,它将暂停这些相同的广告。

在下面的示例中,我仅使用了csv文件中的一部分数据。也可能仅在实际游戏中启用广告,或者在所有游戏日中启用广告,而不仅仅是家用游戏。

我鼓励您尝试使用数据,看看可以做什么。如果发现有用的东西,请发表评论。

谢谢,
拉斯


//-----------------------------------
// Enable/Disable Ads Based on the MLB Schedule
// Created By:  拉斯  Savage
// FreeAdWordsScripts.com
//-----------------------------------
function main() {
  var TEAM_INFO = [
    { team_id : 112, home_field : 'Wrigley Field',  标签  : 'cubs' }, // Cubs
    { team_id : 145, home_field : 'U.S. Cellular Field',  标签  : 'whitesox' } // White Sox
  ];
  //hopefully you've already 创造d and tagged some  广告  with these 标签
  //but just in case...
  创造LabelsIfNeeded(TEAM_INFO); 
  
  var SEASON = (new Date()).getFullYear();
  var is_home = false, is_game_day = false;
  for(var t in TEAM_INFO) {
    var team = TEAM_INFO[t];
    var url = "http://mlb.mlb.com/soa/ical/schedule.csv?team_id="+team.team_id+"&season="+SEASON;
    var html = UrlFetchApp.fetch(url).getContentText();
    var date_list = html.split("\r\n");
    for(var i in date_list) {
      if(i == 0) {continue;}
      var [start_date,start_time,start_time_et,
           subject,location,description,
           end_date,end_date_et,end_time,end_time_et] = date_list[i].split(",");
      
      var today = new Date();
      var game_day = new Date();
      game_day.setFullYear(SEASON,parseInt(start_date.split("/")[0])-1,parseInt(start_date.split("/")[1]));
      
      is_home = (location == team.home_field);
      is_game_day = (diffDays(game_day,today) == 0);
      
      if(is_home && is_game_day) {
        enableBaseballAds(team.label);
        break;
      }
    }
    if(!(is_home && is_game_day)) {
      disableBaseballAds(team.label); 
    }
  }
  
}

function enableBaseballAds(label) {
  Logger.log("Enabling all  广告  with the "+label+"  标签 .");
  var  广告  = AdWordsApp.ads().withCondition("LabelNames CONTAINS_ALL ['"+label+"']").get();
  while(ads.hasNext()) {
     广告 .next().enable(); 
  }
}

function disableBaseballAds(label) {
  Logger.log("Disabling all  广告  with the "+label+"  标签 .");
  var  广告  = AdWordsApp.ads().withCondition("LabelNames CONTAINS_ALL ['"+label+"']").get();
  while(ads.hasNext()) {
     广告 .next().pause(); 
  }
}

function 创造LabelsIfNeeded(team_info) {
  var  标签 _iter = AdWordsApp.labels().get();
  var  标签 _list = [];
  while(label_iter.hasNext()) {
     标签 _list.push(label_iter.next().getName());
  }
  for(var i in team_info) {
    if(label_list.indexOf(team_info[i].label) == -1) {
      AdWordsApp.createLabel(team_info[i].label);
       标签 _list.push(team_info[i].label);
    }
  }
}

//A helper function to compare 日期.
//Copied from: http://goo.gl/uW48a
function diffDays(firstDate,secondDate) {
  var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
  return Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
}

9条评论:

  1. 嗨罗素,
    首先:很棒的博客,我喜欢它!

    现在的大问题是:D-是否有必要进一步深入研究按地理位置细分的转化,包括在增强型广告系列中的新出价调整?

    谢谢,法比奥

    回复删除
    回覆
    1. 好问题,法比奥。现在,我不'认为adwords转化报告提供了这种深入分析的功能。最好的选择是使用您感兴趣的位置创建一些超定位的广告系列。假设您启用了转化跟踪,则可以组合一个脚本来遍历以地理位置定位的广告系列,并报告来自它们的转化情况。

      几乎没有AdWords脚本中增强的广告系列支持。已要求 论坛 因此,我希望它会在今年夏天的强制截止日期前后出现。

      感谢您阅读我的博客。如果您对脚本有任何建议,'d想看看,在我的Google个人资料或Twitter上给我留言。

      谢谢,
      拉斯

      删除
  2. 在...的帮助下 免费硬币大师 您将获得免费旋转,并且在旋转中您可以赢得许多金币,并且可以在游戏中使用这些金币。

    回复删除
  3. 医学研究论文服务的学生重要的是要寻求 医学科学作业帮助 由知名的定制医学写作公司提供,以确保其医学论文写作服务的良好成绩。

    回复删除
  4. 感谢分享这篇文章。 Quickbooks是高级会计软件之一,它提供多种会计功能来管理您的业务数据。您可以 在Mac上安装QuickBooks 也。

    回复删除