関連レコードに表示される項目(文字列,ラジオ,ラジオ)を、
ボタンを押すと、自動的にテーブルにも挿入されるようにしたいです。
ボタンを設置するところまでは、できましたが、
関連レコードの値を取得し、テーブルに挿入するところが分かりません。
宜しくお願いいたします。
関連レコードに表示される項目(文字列,ラジオ,ラジオ)を、
ボタンを押すと、自動的にテーブルにも挿入されるようにしたいです。
ボタンを設置するところまでは、できましたが、
関連レコードの値を取得し、テーブルに挿入するところが分かりません。
宜しくお願いいたします。
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 江田さま
お世話になります。
実装し動作も確認しました。
本当にありがとうございます。