はじめに
iPhoneアプリのデータをスプレッドシートで管理する場面があると思います。
それを利用するために一度plistに変換しなければ...という時に。
今回Google Spread Sheet上の約5000件のデータをplistに変換したのでその手順を共有します。
テキストエディタはCotEditorを使用したのですが
私のマシンの低性能のためかしばしば固まりました。
今回作成したplistの形式
dictionaryのarrayを想定しています。
<array>
<dict>
<key>keyX</key><string>value1</string>
<key>keyY</key><string>value2</string>
<key>keyZ</key><string>value3</string>
</dict>
<dict>
<key>keyX</key><string>valueA</string>
<key>keyY</key><string>valueB</string>
<key>keyZ</key><string>valueC</string>
</dict>
...
</array>
シート上でデータ生成
対象のシート上で作業しました。
左端に列を挿入。
データ部分が2行目からだったので、
2行目の左端セルに以下のような数式を設定。
=CONCATENATE(" <dict>",CHAR(10)," <key>keyX</key><string>",D2,"</string>",CHAR(10)," <key>keyY</key><string>",E2,"</string>",CHAR(10)," <key>keyZ</key><string>",F2,"</string>",CHAR(10)," </dict>")
セルを選択しテキストエディタにコピーして、想定した内容が入ってきているか確認します。
(ダブルクオートが先頭と末尾についてますが、それは後の工程で消します)
問題なかったら、あとはそのセルを選択し左端の列全体にペースト!
数式内のセル指定部分は自動で変わっているので大丈夫です。
そして左端列全体をコピーしテキストエディタにペーストします。
テキストエディタで整形
ここで一度txt形式でファイルを保存。
CotEditorでは自動でカラーリングしようとして固まったりしますが
txt形式にしておくことで抑制します。
「"」除去
複数行のセル内容をコピペすると「"」が付加されているので
「" <dict>」を「 <dict>」に全件置換。
「 </dict>"」を「 </dict>」に全件置換。
「&」を「&」に置換
「&」を「&」に全件置換。
先頭と末尾にplistヘッダとarrayタグを付加
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
...
...
</array>
</plist>
おわりに
こういった作業ですと「スクリプト化しろ」「自動化しろ」と怒られそうですが
まずは手動でやる手順として、参考にしてください。
よろしくお願いします。
別の方法
Excel又はcsvをplistに変換するWebサービスを作成した方がいました。
試しましたが処理が失敗してしまいました。
Excel and CSV to Apple Plist online converter
こちらは試していませんが、着地点はここかもしれません。
【Objective-C】GoogleDriveのSpreadsheetで管理してるデータをplistにする【Ruby】