2013年4月27日,星期六

将当前的犯罪统计信息放入您的广告素材中

我住在芝加哥,这座城市闻名的一件事是它丰富多彩的历史 有组织犯罪。因此,我认为看看是否可以利用这段历史对我有利可能会很有趣。

芝加哥经营着一个收集和汇总城市统计数据的网站: 芝加哥市数据门户。在这里您可以找到各种各样的数据集,但是我感兴趣的是犯罪统计。

经过一番探索,我发现数据以JSON(一种易于使用的软件格式)可用。因此,我整理了一个脚本来读取该数据,然后使用不同类型犯罪的总数自动更新关键字AdParams。

对于任何销售保险或安全系统的公司来说,这可能会派上用场,但是我敢肯定还有其他公司可以使用此信息。

美国其他主要城市也保存了类似的数据集:
您的企业还可以使用哪些其他公共记录数据来定位您的客户?在评论中让我知道,我会看一看。

谢谢,
拉斯

//-----------------------------------
// Put Chicago Crime Stats in Your Creatives
// Created By: 拉斯 Savage
// FreeAdWordsScripts.com
//-----------------------------------
function main() {
  // You can get this link by going here: http://goo.gl/tfNgM
  // Apply some filters and then click export > api
  // This end point is good for all of 2013
  var DATA_ENDPOINT = "http://data.cityofchicago.org/resource/pga9-zdiw.json";
  var CAMPAIGN_PREFIX = 'Crime_Data_Chicago_'; //All your 运动s start with this
  var AD_PARAM = 1; // 1 or 2
  
  try {
    var json = Utilities.jsonParse(UrlFetchApp.fetch(DATA_ENDPOINT).getContentText());
    var summary = summarizeCrimeStats(json);
    //logCrimeSummary(summary);
    
    for(var i in summary) {
      var total = totalPrimaryDescription(i,summary);
      var kw_iter = AdWordsApp.keywords()
                      .withCondition("CampaignName CONTAINS_IGNORE_CASE '"+CAMPAIGN_PREFIX+i+"'")
                      .get();
      while(kw_iter.hasNext()) {
        var kw = kw_iter.next();
        kw.setAdParam(AD_PARAM, total);
      }
    }
  }catch(e) {
  }
}

// A helper function to aggregate the data by primary description
function totalPrimaryDescription(key,summary) {
  var tot = 0;
  for(var i in summary[key]) {
    tot += summary[key][i];
  }
  return tot;
}

//This function takes in a json formatted object and stores the count of instances
//in a 2 dimentional hash of [Primary Description][Secondary Description]
function summarizeCrimeStats(json) {
  var 犯罪_summary = {};
  for(var i in json) {
    var 犯罪 = json[i];
    if(crime_summary[crime._primary_decsription]) {
      if(crime_summary[crime._primary_decsription][crime._secondary_description]) {
        犯罪_summary[crime._primary_decsription][crime._secondary_description]++;
      }else{
        犯罪_summary[crime._primary_decsription][crime._secondary_description] = 1;
      }
    }else{
      犯罪_summary[crime._primary_decsription] = {};
      犯罪_summary[crime._primary_decsription][crime._secondary_description] = 1;
    }
  }
  return 犯罪_summary;
}

//Just a helper function to print out the summary info so that
//I can find the data I'm interested in.
function logCrimeSummary(crime_summary) {
  for(var i in 犯罪_summary) {
    for(var x in 犯罪_summary[i]) {
      Logger.log([i,x,crime_summary[i][x]].join(', '));
    }
  }
}

4条评论: