計算式プラグインを使って、ボタンクリックでテーブル行を追加する例です。
※FSET_TADD 関数(Ver.82以降)で、テーブル行追加を簡潔に記述できるようになりました。
rex0220 計算式プラグイン ボタンクリックでテーブル行追加(FSET_TADD版)
概要
「共通タスク追加」で、テーブルを初期設定。
「Xタスク追加」、「Yタスク追加」で、テーブル行を追加します。
操作例
アプリ設定
スペース項目と計算用項目を追加します。
- ボタン用にスペース項目を要素IDをつけて設定
- 計算用項目追加
- テーブルデータ設定用(文字列)
- テーブル制御(数値)
- テーブル行数(数値)
計算式プラグイン設定
テーブル行追加ボタンクリックで、「テーブルデータ設定用」に追加データ、「テーブル制御」に1を設定します。
- テーブル: 「テーブルデータ設定用」の行数に合わせて行数分追加
- テーブル内項目: 追加行なら、「テーブルデータ設定用」のデータをセット
.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),"期日")
)
)