吉田と申します。
サブテーブルを使ったアプリにて、サブテーブル内のフィールドをドロップダウンからユーザー選択に変更した際のデータ移行作業について投稿致します。
実現したい目標
- サブテーブル内にユーザー選択フィールドを追加
- 既存のドロップダウンフィールドの値を元にユーザー選択フィールドの値を設定
- 既存のドロップダウンフィールドを削除
環境
- Windows10 Pro
- Excel 2016
- Ruby ruby 2.3.3
- cli-kintone
作業の流れ
- 作業前にユーザーのアプリアクセス権を除外
- アプリのサブテーブルにユーザー選択フィールドを追加
- cli-kintoneを使い、サブテーブルのデータをCSVでバックアップ
- バックアップしたCSVをエクセルで開く
- vlookup等でユーザー選択フィールド列にデータを追加
- CSVで書き出し
- cli-kintone を使い、サブテーブルのレコードを更新
- 不要になったドロップダウンフィールドを削除
- ユーザーのアプリアクセス権を戻す
ポイント
以下に”作業の流れ”に記載したいくつかの項目について説明します。
3.cli-kintoneを使い、サブテーブルのデータをCSVでバックアップ
下記にコードを載せます。Rubyを使っていますが他の言語でも同様になるかと思います。
Macの場合は、$を\でエスケープします。
encoding: utf-8
require ‘open3’
app_id = 1
api_token = “API-Token”
column = ‘“$id,サブテーブル”’
output = “csv”
encode = “utf-8”
query = ‘“order by $id asc”’
csv_out = “backup.csv”
cli_str = “cli-kintone -a #{app_id} -d l5mnx -t #{api_token} -c #{column} -o #{output} -e #{encode} -q #{query}”
o, e, s = Open3.capture3(cli_str)
puts o
puts e
puts s
ファイル書き出し
File.open(csv_out, “w”) do |f|
f.write(o)
f.flush
end
4.バックアップしたCSVをエクセルで開く
Excel 2016 では UTF-8(BOM付き)で開けるようでしたので、cli-kintone で出力されたUTF-8のCSVファイルを エンコードを変更して保存できるエディタでUTF-8(BOM付き)で保存し直しています。その後Excelで開いてエクセル内でデータを追加編集しています。
さらに、Excel 2016 からCSV(UTF-8 BOM付き)で出力後に、再度UTF-8(BOM無し) で再保存し直しています。
これは、cli-kintone ではUTF-8(BOM付き) を読み込めなかったからです。
手探りの状態でいろいろ試しながらやったので、もっと良い方法があればコメントをいただけると助かります。