サブテーブル内のラジオボタンが初期値の行がある場合、エラーメッセージを出すようにする

Kintoneカスタマイズ初心者です。お世話になっております。

以下ページを参考にし、テーブル内のラジオボタンの制御・エラーメッセージの発生をさせたいのですが、うまくいきません。

必ず選んでもらえるラジオボタン

やりたいこととしては、

サブテーブル内のラジオボタンフィールドにおいて、1行でも「未選択」が選択された行がある場合、エラーメッセージを出す

というものです。

サブテーブルのフィールドコード : テーブル

サブテーブル内ラジオボタンのフィールドコード : 個別承認

アプリID : 念のため、○○にしてあります

記載JS↓

(() => {
  ‘use strict’;

  // レコード登録、編集、一覧での編集時イベント
  const ev = [‘app.record.create.submit’, ‘app.record.index.edit.submit’, ‘app.record.edit.submit’];
  kintone.events.on(ev, (event) => {

    // レコード情報を取得する
    const record = event.record;
    const selection = record.テーブル.個別承認.value;
    const params = {
      app: kintone.app.getId()
    };
    for (let i = 0; i < record.テーブル.value.length; i++) {
    return kintone.api(kintone.api.url(‘/k/○○/app/form/fields’, true), ‘GET’, params).then((resp) => {
      const name = resp.properties.テーブル.個別承認.label;
      if (selection === ‘未選択’) {
        const errMessage = 「${selection}」は選べません。;
        // フィールドの下に表示するエラー
        record.テーブル.個別承認.error = errMessage;
        // レコードに表示するエラー
        event.error = 項目名「${name}」の${errMessage};
      }
      return event;
   };
    });
  });
})();

 

サブテーブル操作について誤りがありましたら、ご教授いただけますと幸いです。

    const selection = record.テーブル.個別承認.value;

まず、この行でエラーになっているかと思います(コンソールの確認方法等は動かない?そんな時はデバッグをしてみよう!が参考になるかと思います)。

サブテーブルは配列という値になり、他のフィールドとは少し扱いが違います。サブテーブルの長さ分ループするforループを使われている(ループ内でreturn kintone.api…を実行しているので逆が良いです)ようですが、そのループで宣言している変数iの意味が理解できればサブテーブルの扱いは問題ないでしょう。

テーブルの値を利用するkintoneにおけるテーブル操作の基本が参考になるかと思います。

>const selection = record.テーブル.個別承認.value;

確認したところ、確かにこの行でエラーを起こしていました。

ご確認いただき、ありがとうございます。

 

>ループ内でreturn kintone.api…を実行しているので逆が良いです

とありますが、逆がいいとは具体的にはreturn文をどこに配置すればよいでしょうか?

 

色々とお聞きし申し訳ございませんが、教えていただけますでしょうか。

JIP_SANGYO_HOJIN_EP1 さま

    for (let i = 0; i < record.テーブル.value.length; i++) {
  return kintone.api(kintone.api.url('/k/○○/app/form/fields', true), 'GET', params).then((resp) => {

  return kintone.api(kintone.api.url('/k/○○/app/form/fields', true), 'GET', params).then((resp) => {
  for (let i = 0; i < record.テーブル.value.length; i++) {

この順番を入れ替えることを指します(括弧の閉じも同じように順番を替える必要があります)。この辺りの解説は、申し訳ありませんが前提知識(非同期処理、Promise等)が大量にいるので難しいです。
取り敢えずはこういうものと覚える方が良いですが、このネットワークにあるチュートリアルを進めていけば記載されている内容で、進めていけば理解できるようになると思います(私もそうでした)。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。