複雑なCSVインポートをやってみる

CSVインポートを使うことにより、一度にエントリを新規作成やアップデートすることができ、便利に利用できます。
この記事では、少し複雑な項目である、画像やカスタムフィールドグループのインポートについて紹介していきます。

メディアのカスタムフィールド

メディアのIDを指定して、メディアのカスタムフィールドをインポートします。
ポイントは「フィールド名」のカラムと「フィールド名@media」のカラム両方に「メディアID」を設定することです。

"entry_title","hoge","hoge@media"
"メディアのフィールドテスト",41,41
"メディアのフィールドテスト2",36,36

画像のカスタムフィールド

画像のカスタムフィールドは archivesディレクトリに画像を別途アップロードする必要がありますが、 CSVにアップロードされたパスを書くことで、CSVインポートすることができます。

画像のカスタムフィールドには、多くの関連変数があります。すべて指定しなくてもよいですが、少なくとも「フィールド名@path」は指定しましょう。

"entry_title","hoge@path","hoge@x","hoge@y","hoge@alt"
"画像のフィールドテスト","001/202012/4e82948f2a5ce6e6a856d61bf0a1057473cf8997e3c7e7f2da9faa0019935d0e.png",300,169,"代替テキスト"
"画像のフィールドテスト2","001/202012/4e82948f2a5ce6e6a856d61bf0a1057473cf8997e3c7e7f2da9faa0019935d0e.png",300,169,"代替テキスト"

指定可能な項目



カラム名 説明
hoge@alt 代替テキストを設定します
hoge@largePath 大きいサイズの画像のパスを指定します
hoge@largeX 大きいサイズの画像の横幅を指定します(整数)
hoge@largeY 大きいサイズの画像の縦幅を指定します(整数)
hoge@largeFileSiz 大きいサイズの画像のファイルサイズをバイト数で指定します(整数)
hoge@path 画像のパスを指定します
hoge@x 画像の横幅を指定します(整数)
hoge@y 画像の縦幅を指定します(整数)
hoge@fileSize ファイルサイズをバイト数で指定します(整数)
hoge@squarePath 正方形画像のパスを指定します
hoge@squareX 正方形画像の横幅を指定します(整数)
hoge@squareY 正方形画像の縦幅を指定します(整数)
hoge@squareFileSize 正方形画像のファイルサイズをバイト数で指定します(整数)
hoge@tinyPath 小さいサイズの画像のパスを指定します
hoge@tinyX 小さいサイズの画像の横幅を指定します(整数)
hoge@tinyY 小さいサイズの画像の縦幅を指定します(整数)
hoge@tinyFileSize 小さいサイズの画像のファイルサイズをバイト数で指定します(整数)

ファイルのカスタムフィールド

ファイルのカスタムフィールドは archivesディレクトリにファイルを別途アップロードする必要がありますが、 CSVにアップロードされたパスを書くことで、CSVインポートすることができます。

ファイルのカスタムフィールドには、多くの関連変数があります。

"entry_title","hoge@path","hoge@baseName","hoge@fileSize","hoge@originalName"
"ファイルのフィールドテスト","001/202012/aaa.pdf","aaa.pdf",347794,"サンプル.pdf"
"ファイルのフィールドテスト2","001/202012/bbb.pdf","bbb.pdf","サンプル2.pdf"

指定可能な項目



カラム名 説明
hoge@path ファイルのパスを指定します
hoge@baseName ファイル名を指定します
hoge@fileSize ファイルサイズをバイト数で指定します(整数)
hoge@originalName アップロード時のファイル名を指定します

カスタムフィールドグループ

カスタムフィールドグループは、複数の値を入れないといけないので、複雑ですがCSVでインポートすることができます。
複雑なので、例をだして、それにそって説明していきます。

例の仕様

  • 「testGroup」というカスタムフィールドグループ名
  • 「testGroup」は2つのテキストフィールドを持つ(inputA, inputB)
  • 今回入力したい値は2レコードで、値は下の画像のような値をいれたい

例の仕様を満たすCSV

上記の仕様を満たすCSVは以下のようになります。

"entry_title","@testGroup[1]","@testGroup[2]","inputA[1]","inputA[2]","inputB[1]","inputB[2]"
"フィールドグループのテスト","inputA","inputB","aaaaa","AAAAAA","bbbbbb","BBBBBB"

ポイント

まず「グループ名」を @グループ名[添字] という形で、グループ内のフィールド数分用意します。
今回は、inputA と inputB の2つ なので、 "@testGroup[1]","@testGroup[2]" を追加しています。
この項目の値には、グループ内のフィールド名を指定します。今回の場合は inputA, inputB になります。

グループ名とフィールド名が指定できたら、グループ内のフィールド値を添字を使って、 レコード数分 指定していきます。 今回は、2レコードなので、"inputA[1]","inputA[2]","inputB[1]","inputB[2]" を追加しています。
この項目の値は、それぞれフィールドに入れたい値を設定することになります。

* 添字は「1」から始まるのでご注意ください。

以上になります。 今回は複雑なCSVインポートの紹介をしてみました。ぜひお試しください。

CSVインポート機能でのエントリーコード指定方法について再検証してみた


CSVインポート時に、entry_codeの内容が反映されない というフォーラムで質問があった事を今回は取り上げて書いてみたいと思います。