お世話になります。
現在フォームブリッジを使用した申込フォームを作成しております。
■kintone側
- フォームブリッジからのデータを格納する連携対象アプリを作成
- 以前申込された方の情報を登録しておくアプリを作成
■質問内容
-
フォームブリッジ内のjavascriptカスタマイズを使用して、上記2のkintoneアプリの特定データを取得することは可能でしょうか。
(以前申込されたことがある方向けに、情報を呼び出してセットしたいと考えています。)
-
実装方法としてはXMLHttpRequestでAPIトークンを使用して取得する方法を考えています。(ほかに方法があれば、そちらでも構いません)
kViewerルックアップとの連携も検討しましたが、条件付きでデータの呼び出しができないようでしたので質問させていただきました。
よろしくお願いいたします。
「いいね!」 1
hoshiさん
落合です。
以前申し込みされた方をどうやって認識する予定でしょうか?
もし簡易認証やMyページなどを使っていてフォームの created 時にわかっているなら、kViewerルックアップの選択肢を必要なものだけに制限する方法がとれるかと思います。
以上、参考になりますでしょうか?
落合さん
ありがとうございます。
メールアドレス等のユーザー情報入力&チェックボックスにチェックつけられたchangeイベントでkintone上の特定情報を取りに行く方法を
考えていました。
参考に
kViewerルックアップの選択肢を必要なものだけに制限する方法があるのであればそちらの方法も検討してみたいので
方法を教えていただけると助かります。
hoshiさん
例えばですけど、kViewerルックアップフィールドが fields[0] で string1フィールドがメールアドレスの場合こんな感じで選択肢を制限することができるかと思います。
(function () {
'use strict'
var records = fields[0].kviewerRecords
fb.events.fields.string1.changed = [function (state) {
fields[0].kviewerRecords = records.filter(function (kviewerRecord) {
return kviewerRecord.string1.value === state.record.string1.value
})
return state
}]
})()
落合さん
ありがとうございます。
教えていただいたコードを試してみたのですが、kViewerルックアップフィールドのfields[0]をルックアップフィールドのフィールドコードに置き換えて入力すると未定義によるエラーとなってしまいました。fields[0]というのは具体的に何を示しているものなのでしょうか?
また、string1の方もメールアドレスのフィールドコードだと認識して置き換えているのですが、こちらは間違いないでしょうか?
よろしくお願いいたします。
hoshiさん
すいません。間違ってますね。
fields は state.fields です…
state は console.log に吐き出すとオブジェクトの構造がわかると思います。
fields[0] は1つ目のフィールドになります。
汎用的なコードを書くなら、fieldsからフィールドコードで find する function を作るのもいいでしょう。
string1 はフィールドコードで間違いありません。
落合さん
ありがとうございます。
修正点を踏まえて二通り試してみたのですが、正しく動かないのでお手数ですが以下のコードをご覧になってアドバイスをいただけないでしょうか?fields[10]がメールアドレスを示すフィールド、文字列__1行__10がメールアドレスのフィールドコードです。
(function () {
‘use strict’
var records = fields[10].kviewerRecords
fb.events.fields.文字列__1行__10.changed = [function (state) {
state.fields[10].kviewerRecords = records.filter(function (kviewerRecord) {
return kviewerRecord.文字列__1行__10.value === state.record.文字列__1行__10.value
})
return state
}]
})();
(function () {
‘use strict’
fb.events.fields.文字列__1行__10.changed = [function (state) {
var records = state.fields[10].kviewerRecords
state.fields[10].kviewerRecords = records.filter(function (kviewerRecord) {
return kviewerRecord.文字列__1行__10.value === state.record.文字列__1行__10.value
})
return state
}]
})();
hoshiさん
お返事遅くなって申し訳ありません。
基本的には上のコードで問題ないかと思います。
ただフィールドの構成がわかりませんので、これで正しく動くかはお答えできません。
気になる点としては、kViewerルックアップ元のアプリのフィールドコードも 文字列__1行__10 で同じになっていることでしょうか。
下のコードは、元の kviewerRecords が失われてしまいます。
以上、参考になりますでしょうか?
落合さん
遅くなりまして申し訳ありません。
少しkintoneの設定がおかしいところがあり、設定しなおしたところ
ほぼ上のコードで取得することができました。
ありがとうございます。
大変助かりました。
system
(system)
クローズされました:
10
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。