作成したアプリで、一覧でデータを見たときに、
伝票番号(自動入力)、人数(数値)、内訳(文字列)、〜〜〜、〜〜〜、
↑のように列があるときに、
CSV出力で、
この列と別で、伝票番号_人数_内訳 という上の3つをアンダーバーで結合した列をデフォルトである上記の列に加えて、1列、別で出力したいのですが、可能でしょうか?
人数と内訳だけであれば、元々のフォームに計算式で、人数_内訳 と項目を作っておけばいいかなと思うのですが、伝票番号は保存時に自動入力なので、それだとできないのでは?と思いました。
何かいい方法があれば教えていただきたいです。
よろしくお願いします
fukuyama さん
外れましたら申し訳ございません。
試していないですが、
新規レコード保存成功後イベントapp.record.create.submit.successのハンドラ内で、
kintone.api(pathOrUrl, PUT, params) を使って、保存したレコードを更新する手はあるかと思います。
つまり、保存成功したレコードのオブジェクトを受け取り、結合しようとするフィールドの値を取り出して、
結合した文字列を表示するフィールドにセットします。
また、レコード編集の際に、app.record.edit.change.<フィールドコード>を使って、
結合対象フィールドの値が変更されたら、結合した文字列を更新します。
文字列結合のカスタマイズは次の記事が参考になるかと思います。
タイトルに「名前+日付」を結合してみよう!
文字結合プラグイン
akika様
教えてくださりありがとうございます。
以下のように実装してみたのですが、うまくいかないので、どのように実装すれば更新できるか教えていただけないでしょうか?
質問時には、詳細をお伝えできていなかったのですが、更新したい場所がテーブル内の項目になります。
(以下の名称は全てフィールドコードです)
具体的には、
「テーブル」の中身の1つのフィールドコード「CSJS100」をテーブルの中身の項目である「内訳」_「参加人数」_「伝票番号」に更新したいです。
(function() {
“use strict”;
kintone.events.on(‘app.record.create.submit.success’, function(event){
var recordId = event.recordId;
var i = 0;
var CSJS100 = ‘CSJS100’;
event.record.テーブル.value.forEach(function(val){
val.value.CSJS100.value = val.value.内訳.value + ‘_’ + val.value.参加人数.value + ‘_’ + recordId;
// ↓以下で、CSJS100に入れたいデータは取得できています。
console.log(val.value.CSJS100.value);
//レコードの更新API
var body = {
“app”: 8,
“id”: recordId,
“record”: {
“テーブル”: {
“value” : [
{
“id”: i,
“value”: {
“CSJS100”:{
“value”: val.value.CSJS100.value
}
}
}]
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’,true), ‘PUT’, body).then(function(resp){
return event;
});
})
})
})();
実際に上記のコードで実行すると、
エラーが出てしまい、テーブルの他の必須項目が入ってないです、というようなエラー内容が出ます。
テーブル内の「CSJS100」の項目のみ更新したいので、他の項目は更新したくないのですが、何かやり方が間違っていますでしょうか?
またもっと簡単なやり方があれば教えていただけますと幸いです。
よろしくお願いします。