関連レコードに表示される値を、(ボタンを押して)テーブルに挿入したい

関連レコードに表示される項目(文字列,ラジオ,ラジオ)を、

ボタンを押すと、自動的にテーブルにも挿入されるようにしたいです。

ボタンを設置するところまでは、できましたが、

関連レコードの値を取得し、テーブルに挿入するところが分かりません。

宜しくお願いいたします。

napol様

お世話になっております。
cstapの江田と申します。

関連レコードの取得方法については下記記事で紹介しています。
よろしければご利用ください。
https://developer.cybozu.io/hc/ja/community/posts/360017851006

自作のボタンclick時にkintoneのeventオブジェクトを取得したり、レコードを書き換える場合は下記の2つを利用するとよいと思います。
https://developer.cybozu.io/hc/ja/articles/201942014#step2
https://developer.cybozu.io/hc/ja/articles/201942014#step4

江田さま

お世話になっております。

紹介していただいた記事を見ました。

私には難易度が高いようで、どこをどのように修正していくのか分かりません。

もしよろしければ、もう少し詳細にご教授いただけませんでしょうか?

napol様

お世話になっております。

下記のようなコードになるかと思います。
8~10行目はフィールドコードに合わせて変更してください。 また、関連レコードのカラムとコピー先のサブテーブルのカラムはフィールドコードが一致している想定です。

(function(){"use strict";kintone.events.on(['app.record.create.show','app.record.edit.show'],function(){varbuttonSpace='button\_space',//ボタンを置くスペースのスペースIDrelatedRecordsFieldCode='案件一覧',//関連レコードフィールドのフィールドコードtable='Table',//コピー先のサブテーブルのフィールドコードbutton=document.createElement('a');button.innerHTML='copy';kintone.app.record.getSpaceElement(buttonSpace).appendChild(button);RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){button.addEventListener('click',function(){varevent=kintone.app.record.get(),tableColumns=[];for(varfieldCodeinevent.record[table].value[0].value){tableColumns.push({fieldCode:fieldCode,type:event.record[table].value[0].value[fieldCode].type});}(newRelatedRecordsFieldManager(relatedRecordsFieldCode)).getRecords(event.record).then(function(records){event.record[table].value=records.map(function(record){varrow={value:{}};tableColumns.forEach(function(column){row.value[column.fieldCode]={value:record[column.fieldCode].value,type:column.type};});returnrow;});kintone.app.record.set(event);});});});});// コンストラクタ定義varRelatedRecordsFieldManager=(function(fieldCode){//略})();})();

cstap 江田さま

いつもお世話になっております。

 

ご丁寧な対応をしていただきありがとうございます。

実装できました。

もう一点質問をさせていただきたいのですが、

上の例で言うと、案件一覧にて「確度」が100%のレコードだけをテーブルに反映したい場合は、

どのうようにすれば良いでしょうかご教授いただけると幸いです。

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

napol様

お世話になっております。

filterを用いるとよいと思います。

(function(){"use strict";kintone.events.on(['app.record.create.show','app.record.edit.show'],function(){varbuttonSpace='button\_space',//ボタンを置くスペースのスペースIDrelatedRecordsFieldCode='案件一覧',//関連レコードフィールドのフィールドコードtable='Table',//コピー先のサブテーブルのフィールドコードbutton=document.createElement('a');button.innerHTML='copy';kintone.app.record.getSpaceElement(buttonSpace).appendChild(button);RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){button.addEventListener('click',function(){varevent=kintone.app.record.get(),tableColumns=[];for(varfieldCodeinevent.record[table].value[0].value){tableColumns.push({fieldCode:fieldCode,type:event.record[table].value[0].value[fieldCode].type});}(newRelatedRecordsFieldManager(relatedRecordsFieldCode)).getRecords(event.record).then(function(records){event.record[table].value=records.filter(function(record){returnrecord.確度.value==='100%';}).map(function(record){varrow={value:{}};tableColumns.forEach(function(column){row.value[column.fieldCode]={value:record[column.fieldCode].value,type:column.type};});returnrow;});kintone.app.record.set(event);});});});});// コンストラクタ定義varRelatedRecordsFieldManager=(function(fieldCode){//略})();})();

cstap 江田さま

 

お世話になります。

実装し動作も確認しました。

本当にありがとうございます。