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;
};
});
});
})();
サブテーブル操作について誤りがありましたら、ご教授いただけますと幸いです。
3件のコメント
まず、この行でエラーになっているかと思います(コンソールの確認方法等は動かない?そんな時はデバッグをしてみよう!が参考になるかと思います)。
サブテーブルは配列という値になり、他のフィールドとは少し扱いが違います。サブテーブルの長さ分ループするforループを使われている(ループ内でreturn kintone.api...を実行しているので逆が良いです)ようですが、そのループで宣言している変数iの意味が理解できればサブテーブルの扱いは問題ないでしょう。
テーブルの値を利用するとkintoneにおけるテーブル操作の基本が参考になるかと思います。
>const selection = record.テーブル.個別承認.value;
確認したところ、確かにこの行でエラーを起こしていました。
ご確認いただき、ありがとうございます。
>ループ内でreturn kintone.api...を実行しているので逆が良いです
とありますが、逆がいいとは具体的にはreturn文をどこに配置すればよいでしょうか?
色々とお聞きし申し訳ございませんが、教えていただけますでしょうか。
JIP_SANGYO_HOJIN_EP1 さま
↓
この順番を入れ替えることを指します(括弧の閉じも同じように順番を替える必要があります)。この辺りの解説は、申し訳ありませんが前提知識(非同期処理、Promise等)が大量にいるので難しいです。
取り敢えずはこういうものと覚える方が良いですが、このネットワークにあるチュートリアルを進めていけば記載されている内容で、進めていけば理解できるようになると思います(私もそうでした)。