1
1

More than 1 year has passed since last update.

rex0220 計算式プラグインでテーブル内項目の値別に番号付与

Last updated at Posted at 2020-05-24

計算式プラグインでテーブル内項目の値別に番号付与が出来ないかと相談を受けたので、やってみました。
テーブル内の計算で実行速度に問題があったので、計算式プラグインを変更して対応しました。

テーブル行の追加・削除操作例

文字列T1 にドロップダウンT1 の値別に、番号を付加します。

2020-05-24_22h04_34.gif

環境

アプリ設定

  • テーブル内に、数値項目で行番号、文字列、ドロップダウンを配置します。
  • 値別番号付与のための作業用項目として、文字列項目「連結」を追加。
2020-05-24_22h08_03.png

計算式プラグインの設定

  • 「循環参照を許可」をチェックします。
2020-05-24_22h09_56.png

計算式

  • 「行番号」:ROWNO(行番号)+1
    ※ROWNO関数は、指定されたテーブル項目の0から始まる行位置を返します。

  • 「連結」: TARRAY(ドロップダウンT1)
    ※文字列項目に TARRAY関数を指定すると、処理結果の配列をカンマ「,」区切りの文字列に変換します。
    テーブルの行毎に行全体の文字列連結を行うと、行数が増えると処理時間が増大するので、一旦全体の文字列を作成しておきます。
    ※ランク:1
    テーブル内の計算より先に処理させるため、1を指定します。

  • 「文字列T1」: IF(ドロップダウンT1,
    ドロップダウンT1&(
    ARRAY_COUNT(SPLIT(JOIN(SLICE(SPLIT(連結,","),0,ROWNO(Table)+1),
    ",")&",",ドロップダウンT1&","))-1))

    • SPLIT(連結,","):連結をドロップダウンT1 の配列に変換
    • SLICE(SPLIT(連結,","),0,ROWNO(Table)+1):先頭行から処理中のテーブル行までの値を取得

計算式プラグイン Ver.29 変更点の影響

今回の試作では、SLICE 関数とテーブル内項目の計算処理のパフォーマンス改善が必要でした。
Ver.28 以前で実装した場合、50行程度の行数があるとテーブルの追加・変更等で計算処理に10秒程度かかっていました。※計算処理内容は、異なります。
Ver.29 では、同条件で約1秒程度の計算処理に改善されました。

・MATCH 関数追加
・SLICE 引数に計算式を指定可能に変更
・ROWNO にテーブル指定時の不具合対応
 テーブル行追加・削除でROWNO計算式が実行されない
・テーブル内項目の計算処理のパフォーマンス改善
 循環参照かつ編集不可のテーブル内項目の値変更イベント処理抑止

あとがき

まだまだ、計算式プラグインで実装が困難な課題があります。
今回のような改善で、少しずつでも実現できる範囲を広げていきたいと思います。

1
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
1
1