新規投稿
フォローする

Javascriptでの未入力フィールドの取扱

kintoneの各フィールドにおいて、その項目を別システムに移送する

APIを作成しております。

 

未入力のフィールドの値(未入力)ということを認識したいのですが、

理想形としては、

"フィールド名1":{"Type":"LINE_TEXT","value":"" } であれいいのですが、

現実では、 "フィールド名1":{"Type":"LINE_TEXT" } となっております。

このため、event.record["フィールド名1"]["value"] に

アクセスするとundefinedになってしまいます。

もちろん、event.record["フィールド名1"]["value"] = ""; をやれば

理想の状態になるのですが対象項目数が多いため、

他にいい方法があれば、ご教授をいただきたいと思います。

※上記では、未入力を""と表現しましたが、

そもそも未入力の場合は、""でいいのでしょうか?

システムにより null とか [] とかありますが。。。

0

6件のコメント

Avatar
PV

意図と違ってたらすみません。

 

if (!event.record["フィールド名1"]["value"]) {
    // 未入力の場合ここにくる
}

 

この判定で、undefinedでも""でも、未入力の場合は一括で判定できるのではないでしょうか。

0
Avatar
rick

PVさん、ありがとうございます。

ご案内いただいたとおりで判定できるのですが、

対象項目数がたくさんあり、全部に入れると結構な量になってしまうため、

もっと合理的な方法がないかと思っております。

 

①未入力のフィールドが

"フィールド名1":{"Type":"LINE_TEXT" } で取得されるのはKintoneの仕様と理解しており、

"フィールド名1":{"Type":"LINE_TEXT","value":"" } で取得できていたのは気のせいで

js内で自分で""をセットする以外にこういう形で取得する事は不可能ということなので、諦めて書き直すべし。


②js内で自分でセットする以外に"フィールド名1":{"Type":"LINE_TEXT","value":"" }の形で取得する方法がある。

 

上記②であるとしたらどのような方法が良いのかご教授いただければと思います。

 

よろしくお願いいたします。

 

 

 

0
Avatar
PV

いまいちやりたいことがよくわかってないですが、

単純にレコードのフィールド名の一覧が欲しいということですか?

(function () {
    "use strict";

    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function (event) {
        Object.keys(event.record).forEach(function (fieldCode) {
            if (event.record[fieldCode].type === 'SINGLE_LINE_TEXT' &&
                !event.record[fieldCode].value) {
                event.record[fieldCode].value = "";
            }
        });
        return event;
    });
})();
0
Avatar
rick

PV様

ご回答ありがとうございます。

前提のご説明が足りず、申し訳ありません。

ある外部システム(Aシステム)とkintoneフォームとの同期連携をAPI経由で行っております。

kintone側での入力値をAシステムに送るのは問題なくできているのですが、

kintone側で入力値を消した場合、そのnull値もAシステムに対し送りたいのですが、

以前はなぜか event.record["フィールド名1"]["value"]にアクセスすれば、その値が取れていたのですが、

取れなくなってしまい、項目が多いため、なにかかんたんな回避方法が無いかなと思った次第です。

0
Avatar
PV

さっき貼ったコードで、すべての文字列1行のフィールドのvalueプロパティは

"フィールド名1":{"Type":"SINGLE_LINE_TEXT","value":"" } 

にならないですか?

0
Avatar
rick

PV様、ありがとうございます。

こちらも色々考えすぎてごちゃごちゃになってました。

ご教授いただいたとおりで、なんとか完遂できました。

ご丁寧なご回答、ありがとうございました!

0
ログインしてコメントを残してください。