新規投稿
フォローする

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

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

 

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

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

 

例:

■テーブル

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

 

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

 

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

 

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

 

0

4件のコメント

Avatar
カキ氷

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;

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

0
Avatar
Toshi

カキ氷様

回答有難う御座います。

早速、アドバイスいただいた通り下記の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;
});
})();

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

0
Avatar
カキ氷

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; 

 

 

0
Avatar
Toshi

かき氷様

有難う御座います。

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

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;
});
})();

0
サインインしてコメントを残してください。