kintoneの各フィールドにおいて、その項目を別システムに移送する
APIを作成しております。
未入力のフィールドの値(未入力)ということを認識したいのですが、
理想形としては、
“フィールド名1”:{“Type”:“LINE_TEXT”,“value”:“” } であれいいのですが、
現実では、 “フィールド名1”:{“Type”:“LINE_TEXT” } となっております。
このため、event.record[“フィールド名1”][“value”] に
アクセスするとundefinedになってしまいます。
もちろん、event.record[“フィールド名1”][“value”] = “”; をやれば
理想の状態になるのですが対象項目数が多いため、
他にいい方法があれば、ご教授をいただきたいと思います。
※上記では、未入力を""と表現しましたが、
そもそも未入力の場合は、""でいいのでしょうか?
システムにより null とか [] とかありますが。。。
意図と違ってたらすみません。
if (!event.record["フィールド名1"]["value"]) {
// 未入力の場合ここにくる
}
この判定で、undefinedでも""でも、未入力の場合は一括で判定できるのではないでしょうか。
PVさん、ありがとうございます。
ご案内いただいたとおりで判定できるのですが、
対象項目数がたくさんあり、全部に入れると結構な量になってしまうため、
もっと合理的な方法がないかと思っております。
①未入力のフィールドが
“フィールド名1”:{“Type”:“LINE_TEXT” } で取得されるのはKintoneの仕様と理解しており、
“フィールド名1”:{“Type”:“LINE_TEXT”,“value”:“” } で取得できていたのは気のせいで
js内で自分で""をセットする以外にこういう形で取得する事は不可能ということなので、諦めて書き直すべし。
②js内で自分でセットする以外に"フィールド名1":{“Type”:“LINE_TEXT”,“value”:“” }の形で取得する方法がある。
上記②であるとしたらどのような方法が良いのかご教授いただければと思います。
よろしくお願いいたします。
いまいちやりたいことがよくわかってないですが、
単純にレコードのフィールド名の一覧が欲しいということですか?
(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;
});
})();
PV様
ご回答ありがとうございます。
前提のご説明が足りず、申し訳ありません。
ある外部システム(Aシステム)とkintoneフォームとの同期連携をAPI経由で行っております。
kintone側での入力値をAシステムに送るのは問題なくできているのですが、
kintone側で入力値を消した場合、そのnull値もAシステムに対し送りたいのですが、
以前はなぜか event.record[“フィールド名1”][“value”]にアクセスすれば、その値が取れていたのですが、
取れなくなってしまい、項目が多いため、なにかかんたんな回避方法が無いかなと思った次第です。
さっき貼ったコードで、すべての文字列1行のフィールドのvalueプロパティは
“フィールド名1”:{“Type”:“SINGLE_LINE_TEXT”,“value”:“” }
にならないですか?
PV様、ありがとうございます。
こちらも色々考えすぎてごちゃごちゃになってました。
ご教授いただいたとおりで、なんとか完遂できました。
ご丁寧なご回答、ありがとうございました!