新規投稿
フォローする

サブテーブルのマイグレーション(Ruby + cli-kintone)

吉田と申します。

サブテーブルを使ったアプリにて、サブテーブル内のフィールドをドロップダウンからユーザー選択に変更した際のデータ移行作業について投稿致します。

 

実現したい目標

  • サブテーブル内にユーザー選択フィールドを追加
  • 既存のドロップダウンフィールドの値を元にユーザー選択フィールドの値を設定
  • 既存のドロップダウンフィールドを削除

 

環境

  • Windows10 Pro
  • Excel 2016
  • Ruby ruby 2.3.3
  • cli-kintone

 

作業の流れ

  1. 作業前にユーザーのアプリアクセス権を除外
  2. アプリのサブテーブルにユーザー選択フィールドを追加
  3. cli-kintoneを使い、サブテーブルのデータをCSVでバックアップ
  4. バックアップしたCSVをエクセルで開く
  5. vlookup等でユーザー選択フィールド列にデータを追加
  6. CSVで書き出し
  7. cli-kintone を使い、サブテーブルのレコードを更新
  8. 不要になったドロップダウンフィールドを削除
  9. ユーザーのアプリアクセス権を戻す

 

ポイント

以下に”作業の流れ”に記載したいくつかの項目について説明します。

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付き) を読み込めなかったからです。

 

手探りの状態でいろいろ試しながらやったので、もっと良い方法があればコメントをいただけると助かります。

 

 

5

0件のコメント

サインインしてコメントを残してください。