今回は、CSV Creatorプラグインの紹介です。
他のところでも書かれているのを見ましたが、使ってみて感動したので書いてみることにしました。
CSVエクスポートは、有料プランで利用できるデフォルトのアクション download data as CSV がありますが、テーブルのカラム名でダウンロードされるのでユーザーによっては日本語にして欲しいなどあるかと思います。
CSVエクスポートをする場合、
- リレーションのあるテーブルの中身もダウンロードしたい
- リストのデータを取り出したい
という要望があると思います。
お仕事でもほぼ必ずあって、CSVダウンロードをするプラグインを作成していました。リレーションのあるテーブルからデータを取り出すために、テーブルデータを解析することまでしました。
…ですが、出会ってしまいました…😍
プラグインをインストール
まずはプラグインをインストールしましょう。
CSVで検索すればすぐ出てくるはずです。
これが無料なんて感動です。ありがとう😢
テーブルを作る
とりあえずリレーションのあるテーブルを作ってみます。
簡易ECのようなテーブル形式にしておきました。User、Product、Orderの3テーブルと、Option Setsを1つです。
ProductテーブルにはOption Setsのカラムを追加しています。
OrderテーブルにはUser、Productとリレーションを持たせました。
ではこれをダウンロードします。
ダウンロードしてみる
ボタンをクリックしたらダウンロードするようにアクション Create CSV from JSON を選択します。
ファイル名も指定できるので、「.csv」の前の部分を指定します。よくやるのはダウンロードタイミングの日付をformatted as で指定する形です。
ここでJSONをどう設定するのかというと、JSON CONTENTのところにSearch for Table:format as textを書くのです。
とりあえず、全てのorderをCreated Dateの昇順で検索します。
format as textの内容は以下のような形で作成します。
Content to show per list itemは { } で囲みます。
JSONは { “key” : “value” } の形式なので、CSVのヘッダー名にしたい部分をkeyの位置に入力します。CSVの値の部分をThis order’s *** として、このOrderの***の値を指定します。
このとき、リレーションのUserの名前を指定するには、
This order's User's name
日付等を書き出したい形式で指定するには、
This order's Creation Date:formatted as yyyy/mm/dd
OptionのDisplayを表示するには、
This order's product's size's Display
単価と数量から合計金額を計算するには、
This order's product's price * This order's quantity
という形で設定できます。
毎行計算すると重いかな…と思っていましたが、自分で作ったプラグインより速かった…😂(行数が増えたらわかりません…)
Delimiterには「,」(半角カンマ)を入れておきます。
ダウンロードしてみる!
ボタンをクリックすると、csvがダウンロードされるので開いてみます。
ちゃんと計算もされているし、リレーションテーブルの情報も取得できています。
内部的には、便利なPapaparseライブラリを利用しています。
(ここは自分で使っていたのと同じでした)
今後、自分で作ったプラグインは使わないだろうな…。