0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン ボタンクリックでテーブル行追加

Last updated at Posted at 2024-09-26

計算式プラグインを使って、ボタンクリックでテーブル行を追加する例です。
※FSET_TADD 関数(Ver.82以降)で、テーブル行追加を簡潔に記述できるようになりました。
rex0220 計算式プラグイン ボタンクリックでテーブル行追加(FSET_TADD版)

概要

「共通タスク追加」で、テーブルを初期設定。
「Xタスク追加」、「Yタスク追加」で、テーブル行を追加します。

2024-09-26_14h46_45.png

操作例

2024-09-26_15h02_26.gif

アプリ設定

スペース項目と計算用項目を追加します。

  • ボタン用にスペース項目を要素IDをつけて設定
  • 計算用項目追加
    • テーブルデータ設定用(文字列)
    • テーブル制御(数値)
    • テーブル行数(数値)

2024-09-26_14h53_54.png

計算式プラグイン設定

テーブル行追加ボタンクリックで、「テーブルデータ設定用」に追加データ、「テーブル制御」に1を設定します。

  • テーブル: 「テーブルデータ設定用」の行数に合わせて行数分追加
  • テーブル内項目: 追加行なら、「テーブルデータ設定用」のデータをセット

2024-09-26_14h49_46.png

.js
OPTION: 循環参照を許可

// SP1:(SP1) SPACER
BUTTON("共通タスク追加",
  FSET(タスク,
    ARRAY("",
            "[
            {'作業ステータス':'未着手','タスク名':'タスク1','期日':'"&TODAY()&"'},
            {'作業ステータス':'未着手','タスク名':'タスク2','期日':'"&TODAY()&"'},
            {'作業ステータス':'未着手','タスク名':'タスク3','期日':'"&TODAY()&"'}
            ]"
    )
  )
)

// SP2:(SP2) SPACER
BUTTON("Xタスク追加",
  FSET(テーブル制御,1),
  FSET(テーブルデータ設定用,
    "[
       {'作業ステータス':'未着手','タスク名':'Xタスク1','期日':'"&TODAY()&"'},
       {'作業ステータス':'未着手','タスク名':'Xタスク2','期日':'"&TODAY()&"'},
       {'作業ステータス':'未着手','タスク名':'Xタスク3','期日':'"&TODAY()&"'}
    ]"
  )
)

// SP3:(SP3) SPACER
BUTTON("Yタスク追加",
  FSET(テーブル制御,1),
  FSET(テーブルデータ設定用,
    "[
       {'作業ステータス':'未着手','タスク名':'Yタスク1','期日':'"&TODAY()&"'},
       {'作業ステータス':'未着手','タスク名':'Yタスク2','期日':'"&TODAY()&"'},
       {'作業ステータス':'未着手','タスク名':'Yタスク3','期日':'"&TODAY()&"'}
    ]"
  )
)

// テーブルデータ設定用 SINGLE_LINE_TEXT (hide)
IF(テーブル制御=1,テーブルデータ設定用,"")

// テーブル制御 NUMBER (hide)
IF(テーブル制御=1,2)

// テーブル行数 NUMBER (hide)
COUNTROW(タスク)

// タスク SUBTABLE
LET(add_cnt,ARRAY_COUNT(JSON_P(NVL(テーブルデータ設定用,"[]"))),
  IF(add_cnt>0,COUNTROW(タスク)+add_cnt)
)

// タスク.作業ステータス DROP_DOWN (editable)
IF(OR(テーブル行数>ROWNO(タスク),テーブル制御!=2),
  作業ステータス,
  LET(arr,JSON_P(テーブルデータ設定用),
    pos,ROWNO(タスク)-テーブル行数,
    DIC_ITEM(ARRAY_GET(arr,pos),"作業ステータス")
  )
)

// タスク.タスク名 SINGLE_LINE_TEXT (editable)
IF(OR(テーブル行数>ROWNO(タスク),テーブル制御!=2),
  タスク名,
  LET(arr,JSON_P(テーブルデータ設定用),
    pos,ROWNO(タスク)-テーブル行数,
    DIC_ITEM(ARRAY_GET(arr,pos),"タスク名")
  )
)

// タスク.期日 DATE (editable)
IF(OR(テーブル行数>ROWNO(タスク),テーブル制御!=2),
  期日,
  LET(arr,JSON_P(テーブルデータ設定用),
    pos,ROWNO(タスク)-テーブル行数,
    DIC_ITEM(ARRAY_GET(arr,pos),"期日")
  )
)
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?