googleスプレッドシートで武器の性能とか、モンスターの出現位置とか、いろいろとバランス調整したい。それらを最終的にはjsonにしてコードで読み出しする。
これは何百万回とやっていく一連の作業なので、これを自動化する。
googleスプレッドシート->csv->json
まず、スプレッドシートでcsvでダウンロードする。
chromeであれば、ダウンロードの全て表示で、urlが表示される。
注意点としては、ここで、シートは共有しておかないとダメ。
そしたらcurlで引っ張ってこれる。
csv2json.rb
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'csv'
def integer_string?(str)
Integer(str)
true
rescue ArgumentError
false
end
lines = CSV.open(ARGV[0]).readlines
keys = lines.delete lines.first
keys.drop(1)
File.open(ARGV[1], "w") do |f|
a = Hash.new([])
data = lines.map do |values|
eqpId = values.at(0)
values.drop(1)
values.map! do |v|
if v
if integer_string?(v)
v.to_i
else
v.to_s
end
else
v = ""
end
end
a[eqpId] = Hash[keys.zip(values)]
end
#f.puts JSON.pretty_generate(data)
f.puts JSON.pretty_generate(a)
end
mk.sh
#!/bin/sh
set -e
WORKDIR=_work
RELDIR=_release
rm -rf $WORKDIR
mkdir $WORKDIR
cp ./*.rb ./$WORKDIR
cd $WORKDIR
#各種csvダウンロード,json化
#URLは都合上、省く
echo 'curl "URL" > eqp.csv'
curl "URL" > eqp.csv
echo 'ruby csv2json.rb eqp.csv eqp.json'
ruby csv2json.rb eqp.csv eqp.json
#このように変換を必要なかずかける。
#バージョン
TIME=`date '+%y%m%d%H%M%S'`
echo "{\"version\":${TIME}}" > version.json
#まとめる
rm -rf $RELDIR
mkdir $RELDIR
cp ./*.json ./$RELDIR
cd $RELDIR
#zip化し、サーバなどにアップロード
zip -r masterdata.zip *
sudo cp masterdata.zip /Library/WebServer/Documents/