計算をフォームからJavascript に変更して実行したい

kintone ユーザーヘルプで紹介されている"自動計算の演算子と関数"をフォームからJavascript に変更して、実行したいのですが、フォームでは入力されるはずの計算結果が、Javascript になると入力されません。

下記のソースコードは、始業時刻が10:30、終業時刻が16:00、就業時間の中に、昼休み、休憩時間があり、その休み時間を除いた1日の労働時間を計算したいのですが、計算結果が入力されません。それに加えて出勤時刻が始業時刻より早く、かつ退勤時刻が終業時刻よりも遅い場合でも、計算結果は休み時間を除いた10:30から16:00までの労働時間で計算ができるようにしてほしいのですが、どうでしょうか?

kintone.events.on([‘app.record.create.submit’,‘app.record.edit.submit’], function (event) {
var record = event[‘record’];

record[‘始業’].value = ‘10:30’;
record[‘終業’].value = ‘16:00’;
record[‘昼休み開始’].value = ‘12:00’;
record[‘昼休み終了’].value = ‘13:00’;
record[‘休憩開始’].value = ‘14:20’;
record[‘休憩終了’].value = ‘14:35’;

var shukkin = record[‘出勤’].value;
var taikin = record[‘退勤’].value;
var start = record[‘始業’].value;
var finish = record[‘終業’].value;
var hirusta = record[‘昼休み開始’].value;
var hiruend = record[‘昼休み終了’].value;
var kyusta = record[‘休憩開始’].value;
var kyuend = record[‘休憩終了’].value;

if ((shukkin <= start) && (taikin >= finish)) {
record[‘勤務時間’].value = (finish - start - (hiruend - hirusta) - (kyuend - kyusta)) / 3600 ;

} else {
record[‘勤務時間’].value = null;

}

return event;
}
);

投稿にはありませんでしたが、出勤時刻が始業時刻より遅い時は、出勤時刻と始業時刻の間は労働時間から引かれると推測し(退勤も同様)コードを書いてみました。

不要な場合は後ろの if … else if … else if … else を

var working_hours = minToStr(finish - start - (hiruend - hirusta) - (kyuend - kyusta));

に置き換えてください。

kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function (event) {
    // hh:mm を分に変換
    function strToMin(str) {
        var hm = str.split(":");
        return parseInt(hm[0]) * 60 + parseInt(hm[1]);
    }
    // 分をhh:mmに変換
    function minToStr(min) {
        var h = Math.floor(min / 60);
        var m = min % 60;
        return h + ":" + m;
    }

    var record = event['record'];

    record['始業']['value'] = '10:30';
    record['終業']['value'] = '16:00';
    record['昼休み開始']['value'] = '12:00';
    record['昼休み終了']['value'] = '13:00';
    record['休憩開始']['value'] = '14:20';
    record['休憩終了']['value'] = '14:35';

    var shukkin = strToMin(record['出勤']['value']);
    var taikin = strToMin(record['退勤']['value']);
    var start = strToMin(record['始業']['value']);
    var finish = strToMin(record['終業']['value']);
    var hirusta = strToMin(record['昼休み開始']['value']);
    var hiruend = strToMin(record['昼休み終了']['value']);
    var kyusta = strToMin(record['休憩開始']['value']);
    var kyuend = strToMin(record['休憩終了']['value']);

    if (shukkin > start && taikin < finish) { // 出勤が始業より遅い・退勤が終業より早い
        var working_hours = minToStr(taikin - shukkin - (hiruend - hirusta) - (kyuend - kyusta));
    } else if (shukkin > start && taikin >= finish) { // 出勤が始業より遅い・退勤が終業より遅い
        var working_hours = minToStr(finish - shukkin - (hiruend - hirusta) - (kyuend - kyusta));
    } else if (shukkin <= start && taikin < finish) { // 出勤が始業より早い・退勤が終業より早い
        var working_hours = minToStr(taikin - start - (hiruend - hirusta) - (kyuend - kyusta));
    } else {
        var working_hours = minToStr(finish - start - (hiruend - hirusta) - (kyuend - kyusta));
    }

    record['勤務時間']['value'] = working_hours;
    return event;
});

回答ありがとうございました。

Javascript でのコードの書き方について、

まだ分かっていないところもありましたので、

大変参考になり助かりました。