平素は大変お世話になっております。
ありがとうございます。
このたび、フォームブリッジで、「回答を途中で保存」する
機能を実装するため、本Cybozu Developer Networkでご教示
いただいた、フォームを複数作成し、1つ目の回答をアプリに
保存後、JSで次のフォームURLへリダイレクトすることに
成功いたしました。
先輩方のご教示のおかげでございます。ありがとうございます。
ここで次の課題が出てまいりました。たびたび申し訳ございません
が、お知恵を拝借できればと思い、再度投稿させていただきました。
【現在の状況】
Kintoneで「アプリ1」、「アプリ2」を作成
フォームブリッジで、Kintone各アプリに連動した「フォーム1」
と「フォーム2」を作成
2つのフォームはKviewerの「Myページ」に連動するように設定
いたしました。
フォーム1で入力を終え、「途中保存」ボタンをクリックいたします
と、フォーム1の内容がアプリ1に保存されます。続けて、JSで
フォーム2の公開URLに__kViewerViewCode__と__kViewerRecordCode__
をフォーム1から取得して代入し、フォーム2を編集モードで開きます。
ここでフォーム2に回答を入力し、「回答を完了」ボタンクリックで
アプリ2にデータが保存されます。
行いたいことは、Kviewerを使って、アプリ1およびアプリ2のデータを
フォーム1およびフォーム2に表示させて再編集させたいということで
ございます。
アプリ1とアプリ2のレコード番号はともに「1」で、同一人物が回答
したものと仮定します。
このとき、 ブラウザのURL欄に、先ほどの
フォーム2の公開URLに__kViewerViewCode__と__kViewerRecordCode__
を入力しても、新規の編集画面になり、フォーム2にはアプリ2のデータ
を表示することはできませんでした。
アプリ2に連動したKviewerの「MyページURL」を確認すると、先ほど
JSで取得した__kViewerViewCode__と__kViewerRecordCode__とは
異なる文字列になっておりました。
そこで考えましたことは、アプリ1でメールアドレスを入力しているため、
アプリ1のテーブルからフォーム2のコントロール(1行文字列など)に
表示させ、フォーム2の回答後処理で、KviewerのMyページURLを自動返信
メールでお知らせすることでございます。
アプリ1から取得したメールアドレスを「文字列1行」コントロールに
表示させることは可能でございますでしょうか?
また、他によい方法がございましたら、ぜひお教え頂ければ幸いです。
どうぞよろしくお願い申し上げます。
おはようございます。
Cybozu Developer Nework の投稿を参考にし、以下のJSを作成してみました。
フォームブリッジのDOMが作成される前のイベントに実装してみました。
これを、アプリ1と紐づけたKviewer の「Myページ」のレコード番号「1」で
フォーム2を開いた際、コード番号(フィールドコード:i_code)の値からクエリ
を実行してアプリ1のメールアドレス(フィールドコード:mail_address)の値を
取得しようといたしました。
結果は、フォーム2の コードには「1」が表示されておりますが、メールアドレス
の文字列(1列)には何も表示されませんでした。
間違いがあると存じますので、ご指摘いただければ幸いでございます。
どうぞよろしくお願い申し上げます。
(function(){
“use strict”;
//DOMが作成される前のイベントで実装
fb.events.form.created = (function(event){
var record = event.record;
var appId = 16;
var recordId = record[‘i_code’].value[0].name;
kintone.api(‘k/v1/records’,‘GET’,{
app:appId,
query: ‘i_code = "’ + recordId + ‘"’,
fields: [‘mail_address’],
},
function(resp){
var ma = resp[‘records’][0][‘mail_address’][‘value’];
var record = kintone.app.record.get();
record[‘record’][‘mail_address’][‘value’] = ma;
kintone.app.record.set(record);
});
return event;
});
})();
ハイキックさん
kintone.api、kintone.app.record.set は、kintone が提供している関数なので外部サービスのフォームブリッジでは使用できません。
また今のところフォームブリッジから kintone REST API を直接呼び出すことは出来ません。
MS FLOW や 外部に「kintone REST API を呼び出す API」を作成して使うなど1クッション必要です。
Azure functions などサーバーレスでAPIを実装すると運用も楽なのでいいかもしれません。
あとは kViewer と連携して kViewerルックアップ機能などもあるようです。
rex0220 様
大変お詳しいご説明を賜りまして、まことにありがとうございます。
当方の勉強不足で、大変失礼をいたしました。ありがとうございます。
MS FLOW も利用しておりますので、そちらのアプローチも考えて
みたいと存じます。
また、KViewerルックアップもご教示いただきましてありがとうございます。
この機能についていろいろ調べさせていただきましたところ、検索フィールド
に入力された値をキーに、紐づいたデータを別の文字列やドロップダウンの
フィールドに自動表示することができるようでございますので、こちらも
検証してまいりたいと存じます。
また、rex0220様よりご教示いただいた、外部に一度Kintone
REST APIを呼び出して使う方法も模索してまいりたいと存じます。
大変お詳しくご説明いただきまして、本当にありがとうございます。
引き続き、本Cybozu Developer Network で勉強させていただきます。
今後とも何卒よろしくお願い申し上げます。