LoginSignup
2
2

More than 5 years have passed since last update.

googleスプレッドシートからjsonを生成してzipする

Last updated at Posted at 2014-10-20

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/
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2