iTunes Connectのダウンロードレポートを解析するスクリプト
個人のアプリはappfiguresというサイトを使って管理しているのですが、会社で必要となったのでさくっと書いてみました。ウィークリーレポートのみですが、ちょっと直せば色々使えると思います。
こんな感じでダウンロード数、アップデート数が出力されます。
... 2010/11/29 3418 125 2010/12/6 3387 20 2010/12/13 3405 14868 2010/12/20 8266 5346 2010/12/27 10083 2041 2011/1/3 6577 2589 total download 105406 total update 30268
アプリ名を指定するとそのアプリのみの数字が出力されます。
ruby report.rb "Best Album"
ご自由にどうぞ。
# -*- coding: utf-8 -*- PATH = '/path/to/report/dir/*S_W*.txt' target_app = ARGV[0] total = { :download => 0, :update => 0 } weekly_report = [] Dir.glob(PATH).each do |file| weekly = { :download => 0, :update => 0 } week = nil report_type = -1 open(file, 'r') do |f| f.each_with_index do |l, index| e = l.split("\t") if index == 0 report_type = (e.size == 18) ? 0 : 1 and next elsif index == 1 tmp = ((report_type == 0) ? e[9] : e[11]).split('/') week = Time.local(tmp[2], tmp[0], tmp[1]) end if report_type == 0 n = { :name => e[4], :type => e[6].to_i, :unit => e[7].to_i } elsif report_type == 1 n = { :name => e[6], :type => e[8].to_i, :unit => e[9].to_i } end next if target_app && n[:name] != target_app sym = (n[:type] == 1) ? :download : :update total[sym] = total[sym] + n[:unit] weekly[sym] = weekly[sym] + n[:unit] end end weekly_report << [week, weekly[:download], weekly[:update]] end weekly_report.sort{ |a, b| a[0] <=> b[0] }.each do |w| puts sprintf("%d/%2d/%2d %8d %8d", w[0].year, w[0].month, w[0].day, w[1], w[2]) end puts "\n" puts "total download #{total[:download]}" puts "total update #{total[:update]}" puts "\n"