テーブルフィールドの複製について

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

一日中の作業明細記録をしたいですが、①同じ日であれば、終了時間を次の開始時間に自動で複製することは可能でしょうか?⇒これで手動で時間変更をしてもやっぱり自動複製した時間しか認識しないでしょうか?できれば、記入するユーザーが楽になるために、時間複製をしたいだけです。ユーザーが時間を変えてもユーザーの入れた時間で登録できるようにしたいです。

なにかアドバイス頂けたら幸いです。よろしくお願い致します。

篠原 麗様

お世話になっております。 cstapの江田です。

以下のような記述で実装できるかと思います。

(function(){"use strict";kintone.events.on(["app.record.create.change.Table","app.record.edit.change.Table","app.record.create.change.日付","app.record.edit.change.日付",],function(event){varindex=getChangeRowIndex(event);if(index){if(event.record.Table.value[index].value.日付.value===event.record.Table.value[index-1].value.日付.value){event.record.Table.value[index].value.開始.value=event.record.Table.value[index-1].value.終了.value;}}returnevent;});kintone.events.on(["app.record.create.change.終了","app.record.edit.change.終了",],function(event){varindex=getChangeRowIndex(event);if(index\<event.record.Table.value.length-1){if(event.record.Table.value[index+1].value.日付.value===event.record.Table.value[index].value.日付.value){event.record.Table.value[index+1].value.開始.value=event.record.Table.value[index].value.終了.value;}}returnevent;});functiongetChangeRowIndex(event){varresult;event.record.Table.value.forEach(function(row,index){if(event.changes.row===row) result=index;});returnresult;}})();

江田篤史 様

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

望んだ通りの操作ができまして、本当に感激しております。

初心者で大変恐縮ですが、ソースについてお時間許すであればちょっと解読していただけますでしょうか?例えば:

varindex=getChangeRowIndex(event);    
は決めた関数を使用してように思われますが、このようにindexに与えないと後のソースはやっぱり動かないでしょうか?
発想すら浮かべない自分でございましたが、このような素敵なロジックで望んだ通りの動きができて感動するばかりです。
いつも色々と助け頂き、本当に感謝の気持ちでいっぱいです。
いつも本当にありがとうございます。とても勉強になります。励ましにもなっております。
これからもどうぞご指導のほど、よろしくお願い致します。

篠原 麗様

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

indexを指定しなくても、「日付、終了、行数」の変更があった際に、テーブル内全ての行について日付をチェックして自動複製を行うような実装も可能です。
しかしその場合、テーブル内のどこかしらで変更があるたびに全ての行の「ユーザーの入れた時間」が「自動複製した時間」に書き換えられてしまいます。
それでは不便なことが多いかと考え、今回のような実装に致しました。

また、event.changes.rowがテーブルの何行目にあたるのかを知るためのプロパティなどが無いようなので自作関数を使用しました。

江田篤史 様

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

ありがとうございます。とても勉強になります。