やること「ランダムな文字列を生成する」を使用して、抽選アプリを作成する方法をご紹介します。


この記事では下記の2パターンについてご紹介します。

  • パターンA:抽選対象をレコードで管理

  • パターンB:抽選対象をテーブルで管理


パターンA:抽選対象をレコードで管理

kintoneアプリの設定

kintoneアプリのフィールドは、下記のように設定しました。

抽選対象1件につき1レコードを作成します。

フィールドタイプや初期値は下記の通りで、フィールドコードはフィールド名と同じです。


抽選用の一覧を作成しておきます。

「抽選対象」フィールドが「対象」のレコードだけに絞って表示しています。


実行結果

一覧画面「抽選用」で「抽選開始」ボタンを押すとランダム文字列を作成し、その文字列の順番に並べた5件を当選にします。

ランダム文字列は実行するたびに変わるため、何度も「抽選開始」ボタンを押すと、その都度当選対象は変わります。


カスタマイズ

まず、やること「ボタンをメニュー位置に配置する」で、抽選用の一覧画面にボタンを配置します。

やること「一覧の条件でレコードを全件取得する」で、一覧の条件でレコードを取得し、やること「読み込み中画面を表示する」で抽選中は画面の操作ができないようにします。

一覧にレコードがなかった場合は、やること「情報ダイアログを表示する」でその旨表示します。


一覧のレコードを取得できたら、やること「レコードを書き出す」で一旦すべてのレコードを「落選」にしておきます。


やること「リストから要素を取り出す」で、アクション145で取得したレコードを「リスト」に指定します。

そして、やること「ランダムな文字列を生成する」で生成した文字列を、やること「レコードを更新または追加する(キーの値を直接指定)」でリストから取り出したレコードの「ランダム文字列」フィールドにセットします。


アクション147~149を、アクション145で取得したレコードの件数ぶん繰り返します。


やること「リストから要素を取り出す」の繰り返しが終了した時の条件「リストからの取り出しが終了した時」に、ランダム文字列をセット後のレコードを改めて取得します。


やること「条件を組み立ててレコードを取得する」で下記のように指定します。

  • 検索条件

    • レコード番号が、アクション145で取得したレコードのレコード番号と等しい(アクション145と同じレコードを取得する)

  • 並び順

    • ランダム文字列フィールドの値の昇順(ボタンをクリックするたびに毎回ランダム文字列が変わるため、取得されるレコードの順番も毎回変わる)

  • 最大取得件数

    • 当選にしたいレコード数を指定する(今回は5件)


そして、取得したレコードを やること「レコードを書き出す」で、当選結果に「当選」とセットすれば、ランダムなレコードに「当選」がセットできます。


最後に「画面をリロードする」で、当選結果を画面に表示します。


パターンB:抽選対象をテーブルで管理

kintoneアプリの設定、実行結果

テーブル外に当選人数を入力する数値フィールドを配置し、

テーブル内には下記のフィールドを配置しておきます。

  • 行番号(数値)

  • 名前、テーブル内ランダム文字列、テーブル内結果(文字列(1行))


カスタマイズ実行前に入力するのは「名前」フィールドだけで、残りのフィールドはカスタマイズで値をセットします。


カスタマイズ

やること「ボタンをフィールド名の右に配置する」などでボタンを配置します。

また、今回のカスタマイズは、追加画面または編集画面でしか実行できない(詳細画面や一覧画面では使用できない)ので、条件は「追加画面・編集画面を表示した時」を指定します。

条件「ボタンを押した時」に、やること「ランダムな文字列を生成する」で、テーブル内の「テーブル内ランダム文字列」フィールドにランダムな文字列をセットします。
この やること は、「セット先フィールド(省略可)」にテーブル内のフィールドを指定すると、テーブル内の全行にランダムな値をセットします。


次に、やること「テーブルの行を並べ替える」で、「テーブル内ランダム文字列」フィールドの値で並べ替えます。こちらはパターンAの時と同様に、ランダムな文字列で並べ替えることで、ボタンをクリックするたびに順番が変わります。



次に、当選結果をフィールドにセットするカスタマイズを行います。

やること「テーブルの列に行番号をセットする」で、テーブル内の「行番号」フィールドに、上から順番に1から始まる番号をセットします。


そして、やること「フィールドに値をセットする」のアクションの条件に「フィールド値が特定の値ならば」を指定し、行番号フィールドの値が、テーブル外の「当選人数」フィールドの値以下の場合は当選、そうではない場合は落選とセットします。


このようにカスタマイズいただくと、テーブル内の行内で「当選人数」で指定した行数だけ「当選」がセットされます。



カスタマイズは以上です。

ぜひお試しくださいね。


お試しいただいて、想定通り動作しないなどありましたら、チャットでお問合せください。