テーブル内の一番下の列のデータ取得

「日時」 「ドロップダウン」 「文字列」のテーブルを作成しました。

 

日報形式で日々テーブルを追加しているのですが

最後のデータを取得し特定のフォームへコピーする事は可能でしょうか。

 

例:

■テーブル

2017-01-01 12:00 ドロップダウンA 文字列A

2017-01-02 12:00 ドロップダウンB 文字列B

2017-01-03  12:00 ドロップダウンC 文字列C

■コピー先

2017-01-03  12:00 ドロップダウンC 文字列C

 

※テーブルの最下部に保存された文字列をコピー先へ保存時、または変更時に反映されるようにしたいです。

 

ご教示いただけますと幸いです。

 

何卒宜しくお願い致します。

 

Toshiさん

 

サブテーブルの一番下のindex番号は以下のように取得できます。

record['TableField'].value.length -1

indexを取得したら、その行を取得して各フィールドにコピーします。

//サブテーブルから最下部の行の値を取得
var index = record['TableField'].value.length -1;
var targetRow = record['TableField'].value[index].value; // テーブル最下部の行を取得
var text = targetRow['TextOfTableField'].value;
var dropdown = targetRow['DropDownOfTableField'].value;
var date = targetRow['DateOfTableField'].value;

//コピー
record['TextField'].value = text;
record['DropDownField'].value = text;
record['DateField'].value = text;

保存時に処理を行う場合はこちらのイベントを併用してください。

カキ氷様

回答有難う御座います。

早速、アドバイスいただいた通り下記のjsを作ってみて実装してみましたが…

想像通りに稼働しませんでした。フィールドコードを元々設定していた形にあてはめてみたのですが

フィールドコードの設定が悪い…ということもありえるのでしょうか。

////////////////////////////////////////////////////////////////////

(function() {
“use strict”;
kintone.events.on("app.record.create.submit ", function(ev) {

//サブテーブルから最下部の行の値を取得
var index = record[‘Table’].value.length -1;
var targetRow = record[‘Table’].value[index].value; // テーブル最下部の行を取得
var text = targetRow[‘contents’].value;
var dropdown = targetRow[‘reception’].value;
var date = targetRow[‘data’].value;

//コピー
record[‘contents1’].value = text;
record[‘reception1’].value = dropdown;
record[‘data1’].value = date;

return event;
});
})();

////////////////////////////////////////////////////////////////////

Toshiさん

 

見た感じで気になったのは

 

kintone.events.on("app.record.create.submit ", function(ev) { ←ここのevと

return event; ←ここのeventは同じ変数名である必要があります。

つまり、event.onで現在表示しているレコード情報がeventオブジェクトとして取得、その後プログラムでレコード情報を書き換えて、最後にreturn することで変更したレコード情報を反映という意味になります。

 

あと、record変数ですが、kintone.event内では event.recordから取得する必要があるので、indexを取得する前に以下の一文を追加して、recordデータを取得してください。

var record = ev.record; 

 

 

かき氷様

有難う御座います。

ご指摘いただいた通り、修正したものの最下部を取得する事ができませんでした。

recordがわかりにくかったので一旦整理しなおしいくつか試してみましたが想定通りにはなかなかいかず…。

 

 

/////////////////////////////////////////

(function() {
“use strict”;

kintone.events.on(“app.record.create.submit”,‘app.record.detail.show’, function(event) {

//サブテーブルから最下部の行の値を取得
var record = event.record;
var index = record[table].value.length -1;
var targetRow = record[‘table’].value[index].value; // テーブル最下部の行を取得
var text = targetRow[‘text’].value;
var dropdown = targetRow[‘dropdown’].value;
var data = targetRow[‘data’].value;

//コピー
record[‘text1’].value = text;
record[‘dropdown1’].value = dropdown;
record[‘data1’].value = data;

return event;
});
})();

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。