LoginSignup
0
1

More than 1 year has passed since last update.

rex0220 計算式プラグイン テーブルにCSV入力

Last updated at Posted at 2022-01-05

計算式プラグインで、CSV文字列からテーブルの値に変換できるようになりました。
まとめてテーブル入力したい場合につかえるかも。
※計算式プラグイン Ver.48以降でサポート

概要

テーブルに計算式を指定することで、文字列複数行項目のCSV文字列をテーブルに反映できます。
2022-01-05_11h43_41.png

文字列複数行の計算式:
CSV_TVAL(CSVデータ)

※CSVデータの文字列をテーブルに反映

CSV_TVAL 関数

  • CSV_TVAL: CSVをテーブル入力データに変換
    • CSV_TVAL(CSV項目[,TPOUT(出力先テーブル内項目),...]
    • [TPOPT] 関数で、オプションを指定 TPOPT("HEADER","N")
      • HEADER: "Y": あり、"S",: スキップ、"N": なし :ヘッダー行の処理
      • TITLE: "code": フィールドコード、"label": ラベル :ヘッダー行のタイトルの種類
      • SEP: 規定値 "," :区切り文字を指定
      • QMARKS: 規定値 '"' :引用符を指定
      • MAXROWS: 規定値 "" :最大行数
    • [TPOUT(項目[,...])]: 出力項目を指定。指定が無い場合は、テーブルの全項目
      • CSVデータの並び位置で出力項目に変換

        ※@ を指定すると除外
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定
      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • [TPLABEL("ラベル"[,"ラベル"...]): 出力する項目名を変更
    • 例 CSV_TVAL(CSV文字列)
    • 例 CSV_TVAL(CSV文字列,TPOPT("TITLE","label")))
      • CSVヘッダー行のタイトルを項目ラベルとして処理
    • 例 CSV_TVAL(CSV文字列,TPOPT("HEADER","S"),TPOUT(文字列,数値),TPSORT(数値,0)
      • CSVヘッダー行をスキップして、行の先頭から「文字列」,「数値」のフィールドコードとして取得して、数値の降順でソート

CSV入力チェック時のみCSVをテーブル変換

随時CSVをテーブル変換するだけだと、誤ってテーブルが変わってしまうリスクがあります。
CSV入力チェック時のみCSVをテーブル変換してみます。

2022-01-05_11h54_09.png

文字列複数行の計算式:
IF(IN(CSV入力,"入力"),
 CSV_TVAL(CSVデータ,
  TPOPT("TITLE","label"),
  TPSORT(数値,0))
)

  • IF(IN(CSV入力,"入力"), : CSV入力が"入力"をチェック時
  • CSV_TVAL(CSVデータ, : CSVデータ
  • TPOPT("TITLE","label"),: CSV のヘッダー行がラベルとして処理
  • TPSORT(数値,0))) : 数値の降順でソート

TAB タブ区切り、日付 YYYY/M/D 形式の TSV データ入力

Excel からデータを文字列複数行にコピペすると、TAB タブ区切り(TSV)になります。
また、日付形式が kintone ("YYYY-MM-DD")と異なり "YYYY/MM/DD" または、"YYYY/M/D" です。

計算式プラグインで、これらを扱うためには、TSV を CSV に変換して、処理します。

2022-01-05_16h10_43.png

テーブルの計算式:

IF(IN(CSV入力,"入力"),
  CSV_TVAL(
    REPLACERE(REPLACERE(REPLACERE(REPLACERE(
      CSVデータ,
      "([^|\t])([0-9]{4})/([1-9])/([1-9]|[12][0-9]|3[01])(\t|$)","g","$1$2/0$3/$4$5"),
      "([^|\t])([0-9]{4})/(0[1-9]|1[0-2])/([1-9])(\t|$)","g","$1$2/$3/0$4$5"),
      "([^|\t])([0-9]{4})/(0[1-9]|1[0-2])/([0][1-9]|[12][0-9]|3[01])(\t|$)","g","$1$2-$3-$4$5"),
      "\t","g",","),
    TPOPT("TITLE","label"),
    TPOPT("QMARKS",""),
    TPSORT(数値,0)
   )
)

REPLACERE で、下記の変換を行います。
"YYYY/MM/DD","YYYY/M/D" -> "YYYY-MM-DD"
タブ区切り -> カンマ (",") 区切り

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1