kintoneのテーブル内の日付フィールドの色を条件にあった時、変更したいです。

下記のコードでうまくいきませんでした。

 

【フィールドコード】

・テーブルのフィールドコード、テーブル

・サブテーブル の日付フィールドのフィールドコード、A票交付日、B2票到着日、D票到着日、E票到着日

 

A票交付日のセルに日付が記入されており、現在の日付より、下記の日数を超えても、そのセルが空白の場合、空白のセルを、黄色にしたいです。

※B2票到着日、D票到着日は90日 ※E票到着日は、180日

 

【ソースコード】

(function() { ‘use strict’; kintone.events.on(‘app.record.detail.show’, function(event) { var record = event.record; var subtable = record.テーブル.value; for (var i = 0; i < subtable.length; i++) { var row = subtable[i]; var currentDate = new Date(); var ADate = new Date(row.A票交付日.value); var BDate = new Date(row.B2票到着日.value); var DDate = new Date(row.D票到着日.value); var EDate = new Date(row.E票到着日.value); // A票交付日から90日以上経過し、B2票到着日が空白の場合、黄色にする if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 90 && !BDate.value){ kintone.app.record.setFieldColor({ field: ‘テーブル.value[’ + i + ‘].B2票到着日’, color: ‘#FFFF00’ }); } // A票交付日から90日以上経過し、D票到着日が空白の場合、黄色にする if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 90 && !DDate.value) { kintone.app.record.setFieldColor({ field: ‘テーブル.value[’ + i + ‘].D票到着日’, color: ‘#FFFF00’ }); } // E票到着日が180日以上経過し、空白の場合、黄色にする if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 180 && !EDate.value) { kintone.app.record.setFieldColor({ field: ‘テーブル.value[’ + i + ‘].E票到着日’, color: ‘#FFFF00’ }); } } return event; }); })();

ご教授お願いします

ソースコードの表記が崩れてしまっていますね。

可能な限り修復してみました。

(function () {
    'use strict';
    kintone.events.on('app.record.detail.show', function (event) {
        var record = event.record;
        var subtable = record.テーブル.value;
        for (var i = 0; i < subtable.length; i++) {
            var row = subtable[i];
            var currentDate = new Date();
            var ADate = new Date(row.A票交付日.value);
            var BDate = new Date(row.B2票到着日.value);
            var DDate = new Date(row.D票到着日.value);
            var EDate = new Date(row.E票到着日.value);
            // A票交付日から90日以上経過し、B2票到着日が空白の場合、黄色にする
            if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 90 && !BDate.value) {
                kintone.app.record.setFieldColor(
                    {
                        field: 'テーブル.value[' + i + '].B2票到着日',
                        color: '#FFFF00'
                    }
                );
            } // A票交付日から90日以上経過し、D票到着日が空白の場合、黄色にする
            if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 90 && !DDate.value) {
                kintone.app.record.setFieldColor(
                    {
                        field: 'テーブル.value[' + i + '].D票到着日',
                        color: '#FFFF00'
                    }
                );
            } // E票到着日が180日以上経過し、空白の場合、黄色にする
            if ((currentDate - ADate) / (1000 * 60 * 60 * 24) > 180 && !EDate.value) {
                kintone.app.record.setFieldColor(
                    {
                        field: 'テーブル.value[' + i + '].E票到着日',
                        color: '#FFFF00'
                    }
                );
            }
        }
        return event;
    });
})();

修復していただきありがとうございます。
初心者の上、崩れてることに気づかずすみませんでした。

現時点で実行するとどうなってしまうのですか?

エラーが出るのですか?

エラーはでないが期待する動作と違うのでしょうか?

コード自体にはエラーが出ておりません。
テスト環境での実装ですが、テーブルの日付フィールドに、A票交付日に日付が記入されていて、B2票到着日、D票到着日、E票到着日が空白なのにセルの色が変わりません。

 

一つ一つ試していくしかないです。

  1. 色を変更するかどうかを決めるif文の内側を通っていますか?

            if((currentDate - ADate) / (1000*60*60*24) >90&& !BDate.value) {
    

console.log()をいれてみるか、ブラウザ上でブレイクポイントを設定してみてください。

条件を一切無視して自分が色を変えたい行の項目の色を変更できていますか?

harada 様
ご連絡が遅れて申し訳ありません。

harada 様の助言を頼り、どこが間違ってるのか探し、下記のコードでうまく動かすことができました。
ありがとうございます。

jQuery.noConflict();
(function($) {
“use strict”;

// サブテーブルのB2票到着日の色を変更する
function changeColor01(arg) {
var tr = $(kintone.app.record.getFieldElement(‘テーブル’)).find(‘tr’);

var target = arg[0];  
for (var i = 0; target.length \> i; i++) {  
  var row = target[i]; // 色を変える行数を取得  
 &nbsp; &nbsp;$(tr[row]).children().eq(2).css('background-color', '#90ee90'); // サブテーブルの列取得し色指定

}  

}
// サブテーブルのD票到着日の色を変更する
function changeColor02(arg) {
var tr = $(kintone.app.record.getFieldElement(‘テーブル’)).find(‘tr’);

var target = arg[0];  
for (var i = 0; target.length \> i; i++) {  
  var row = target[i]; // 色を変える行数を取得  
 &nbsp; &nbsp;$(tr[row]).children().eq(3).css('background-color', '#90ee90'); // サブテーブルの列取得し色指定  
}  

}

// サブテーブルのE票到着日の色を変更する
function changeColor03(arg) {
var tr = $(kintone.app.record.getFieldElement(‘テーブル’)).find(‘tr’);

var target = arg[0];  
for (var i = 0; target.length \> i; i++) {  
  var row = target[i]; // 色を変える行数を取得  
 &nbsp; &nbsp;$(tr[row]).children().eq(4).css('background-color', '#90ee90'); &nbsp;// サブテーブルの列取得し色指定  
}  

}

kintone.events.on([‘app.record.detail.show’], function(event) {

var targetRow1 = []; // B2票到着日の色変え対象の行番号  
var targetRow2 = []; // D票到着日の色変え対象の行番号  
var targetRow3 = []; // E票到着日の色変え対象の行番号  
  
var tableRecords = event.record['テーブル'].value;  
  
for (var j = 0; j \< tableRecords.length; j++) {  
 &nbsp; &nbsp;var ADate = tableRecords[j].value['A票交付日'].value;  
  var B2Date = tableRecords[j].value['B2票到着日'].value;  
  var DDate = tableRecords[j].value['D票到着日'].value;  
  var EDate = tableRecords[j].value['E票到着日'].value;  
    
  // 現在の日付の取得  
  var now = new Date();  
    
  // A票交付日の日付の取得  
  var Aday = new Date(ADate);  
    
  // 経過日数の計算  
  var ToDay = (now - Aday)/ 86400000;  
    
    
  if (ToDay \> 90 && B2Date === null) {  
    targetRow1.push(j+1);  
   }  
   if (ToDay \> 90 && DDate === null) {  
    targetRow2.push(j+1);  
   }  
   if (ToDay \> 180 && EDate === null) {  
    targetRow3.push(j+1);  
   }  
}

// サブテーブルのhtmlが表示されるまで0.5秒待つ  
setTimeout(changeColor01, 500, [targetRow1]);  
setTimeout(changeColor02, 500, [targetRow2]);  
setTimeout(changeColor03, 500, [targetRow3]);  
return event;  

});
})(jQuery);

だいぶコードが変わりましたね。

しかし、存在しないsetFieldColorなどはどこからでてきたのでしょうかね。

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