LoginSignup
4
3

rex0220 データ生成プラグイン

Last updated at Posted at 2020-03-20

既存レコードから他アプリへレコードをコピーしたり、テーブル行をレコードに変換するプラグインです。
レコード更新時の自動処理、ボタンクリックによる一括操作が可能です。
乱数を使ってまとめてテストレコードを生成できますので、テスト作業が楽になるかも。
ただし、設定をミスるとデータが丸ごと消えますので注意しましょう。

Ver.23 変更点
・ENCODE_URI, ENCODE_URICP, DECODE_URI, DECODE_URICP 関数追加
・FISCAL_YEAR 関数を追加。指定日と年度開始日から年度を返す
 FISCAL_YEAR("2024-03-01", "04-01") -> 2023
・LOG 関数を追加。オプションの内容を console.log に出力
・LOGIN_INFO 関数を追加。ログインユーザー情報のオブジェクトを返す
・SEL_CODE 関数に「code, name」情報を返す "obj" オプションを追加
SEL_CODE(ユーザー選択, "obj") -> [{code:'user1code', name:'user1name}]
・SET_CODE 関数にユーザー選択・組織選択・グループ選択を指定した場合、そのままオブジェクトをセットに変更
 ※ユーザー選択・組織選択・グループ選択に値を設定時、名称が表示されるようになる
・ARRAY_GET 関数の第1パラメータに、配列以外の値を指定された場合、エラーにせず空文字を返すように変更

Ver.22 変更点
・計算式でテーブル内項目を指定した場合に、一括データ生成で計算結果が不正になる不具合の対策
 ※一括データ生成のレコード取得時に必要なテーブル項目を取得していない不具合
・Edge において、チェックボックスの色を変更

データ生成プラグインの応用例

テーブル行を他アプリのレコードに変換

  • 案件管理アプリの活動履歴テーブルを、活動詳細アプリのレコードに変換する例です。
2020-03-20_23h48_20.png
  • 編集画面で、案件担当者名を変更すると、活動詳細アプリにも反映されます。
2020-03-20_23h56_03.png
  • 一覧画面での一括データ生成
2020-03-21_00h00_37.png

活動詳細アプリで活動件数集計グラフ

kintone 標準のグラフでは、テーブル行内の件数集計が苦手です。
テーブル行をレコード変換することにより、集計が可能になります。
2020-03-21_11h44_04.png

プラグインの機能

  • 既存レコードから他アプリへレコードをコピー
  • テーブル行をレコードに変換
  • レコード更新時の自動処理
  • ボタンクリックによる一括操作
  • ボタン操作の権限設定
  • 複数アプリ(最大10個)へのデータ生成

※ 動作環境は、PCとスマホです。

rex0220 storesで、販売中です。

アプリの準備

プラグインの設定項目が多くわかりにくいので、アプリ作成から順番に作成してみます。

案件管理アプリの作成

  • kintone アプリストアで、「案件管理」アプリを選択して作成します。
  • フィールドコードをラベルに合わせて、設定します。

    これをしないと、プラグインの設定をみても分からない状態になりますので、必ず設定しましょう。

    ※フィールドコード設定プラグインで変更した例
2020-03-20_23h20_57.png

活動詳細アプリの作成

  • 案件管理アプリを流用して、活動詳細アプリを作成します。
  • テーブル内項目は、テーブルではない普通の項目に作り直します。

    フィールドコードは、テーブル内項目と合わせます。
  • 他の項目もフィールドコードを合わせておくとプラグインの設定が簡単になります。
  • 「識別ID」項目を文字列で追加します。

    プラグインでレコード更新する際のキー項目として使われます。
  • 必須項目などの制約がある項目は、可能ならば制約を外しておきます。
  • 元アプリで制約解除などを行うと、コピー先のアプリも合わせて変更する必要があります。
  • ルックアップ項目は、文字列項目に変更しましょう。

    APIで追加・更新時はルックアップ元のデータが無くなっているとエラーになります。
2020-03-20_23h16_24.png

データ生成プラグインの設定

案件管理アプリにデータ生成プラグインを設定します。

  • ボタン別設定: ボタン名を指定します。
  • 一覧別設定: 一括データ生成ボタンを表示する一覧を指定します。
  • 権限設定: ボタンを表示するユーザー・組織・グループを指定します。
  • 実行条件・後処理
    • 実行条件:データ生成を行う条件を指定します。
      • 詳細画面では、実行条件が false であれば、ボタンを表示しません。
      • 編集画面・一覧画面では、各レコード単位に実行条件を計算し、データ生成を行うか判定します。
    • 後処理:データ生成後に、自レコードで更新する項目と計算式を指定します。
      • 「後処理で項目を"完了"を指定し、実行条件で"完了"以外でデータ生成処理を行う」などの制御で利用できます。
  • 自動: レコード更新時に自動で、対象アプリのレコードを生成します。
  • ボタン: 詳細画面・一覧画面に表示される「データ生成」ボタンの処理対象になります。
  • 処理名: なんの処理か忘れないようにメモしておきましょう。
  • アプリ: 対象アプリを選択します。
  • 対象アプリ条件: キー項目となる項目と条件を指定します。
  • ループ: 1レコードで何回処理するかループ回数を指定します。(計算式指定可能)
  • テーブル: テーブル行をレコード変換する場合、選択します。
  • 設定項目: 対象アプリに設定する項目と計算式を設定します。
2020-03-20_23h28_04.png

生成するレコード数

元アプリの1レコードに対して、下記の出力レコード数になります。

出力レコード数=ループ数*テーブル行数*ループ配列数

例      ループ数 テーブル行数 ループ配列数 出力レコード数
テーブルなし  1 1 1 1
テーブルあり  1 10 1 10
ループ配列あり  1 1 3 3
全てあり  10 10 3 300

更に一覧画面で、一括生成すると

  • 一覧、ループ数あり、テーブルあり、ループ配列あり
    • 100レコード*10(ループ数)*10(テーブル行数)*3(ループ配列数)=30,000レコード

対象アプリ条件

キー項目となる項目と条件を指定します。
※キー項目に過不足があると、対象アプリに反映されなかったり、レコードが丸ごと削除されたりしますので、必ず設定内容をテストして問題ないか確認してください。

2020-03-20_23h39_24.png

設定項目の詳細

ループ配列: 配列でループを指定します。

Ver.11 以降、数値指定可能

  • ARRAY("ABC","XYZ")
  • ARRAY("予算","実績")
  • ARRAY(チェックボックス)
  • SEL_CODE(ユーザー選択,"ARRAY")
  • 10
  • 数値
  • "A"
    • ARRAY("A") と同等

出力条件: 計算式の結果で、レコード出力するか制御できます。

  • IF(数値>=1000,1) : 数値が1000以上の場合に、レコード出力します。
  • SWITCH($val,"予算",予算,"実績",実績,0)>0 :予算・実績処理時に数値が1以上
  • IFS(IN($val,"sample1"),数値1,IN($val,"sample2"),数値2,0)>0 

出力項目の計算式

対象アプリの項目ごとに、計算式を設定します。
計算式プラグインの計算式と同様の関数が利用できます。

  • 変数として、下記が利用できます。
    • $lno: ループカウンター
    • $rno: テーブルの行カウンター
    • $val: ループ配列のループ値
  • 乱数関連の関数: データ作成時に乱数を利用できます。
    • RAND 関数: 0 ~ 1 の範囲で少数の乱数

      • RAND()
    • RANDBETWEEN 関数: 指定した範囲の整数の乱数

      • RANDBETWEEN(1,10): 1 ~ 10 の乱数

自動設定

設定項目のダイアログで「自動設定」ボタンをクリックすると、フィールドコードとタイプの一致する項目に、自動で計算式を設定します。
有効な計算式を設定済みの項目は、自動設定の対象外です。

2020-03-20_23h40_09.png
  • 識別IDの設定

対象項目の「識別ID」をチェックすると、レコード更新時にプラグインが識別IDをセットします。

2020-03-20_23h43_00.png

テーブル項目の設定

編集ボタンをクリックして、テーブル内項目の計算式を指定します。

  • 変数として、下記が利用できます。
    • $lno: ループカウンター
    • $rno: テーブルの行カウンター
    • $val: ループ配列のループ値
    • $trno: From テーブルの行カウンター
    • $tval: ループ配列のループ値

2021-12-21_01h58_42.png

関連情報

注意事項

  • 既に、JavaScript によるカスタマイズを行っているアプリの場合、処理が競合して、エラーになる場合があります。その場合は、該当するアプリでプラグインの使用を中止してください。
4
3
85

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
4
3