kintoneのJSでテーブルが空かどうか判定する方法(書き方)を教えてください。

初歩的な質問ですみませんが、テーブルが空(0行目もない状態)かどうかを
確認するソースの書き方を教えて欲しいです。

 

プロセス管理(ステータス)の履歴をテーブルに保存するようなカスタマイズを

https://developer.cybozu.io/hc/ja/community/posts/115011858706-%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%AE%A1%E7%90%86%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%E3%81%AE%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E4%BD%9C%E6%88%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

を参考にJSで実装しました。

しかし、この履歴のテーブルを作成したのが、運用開始だったため、
履歴テーブルをフォームで作成する前に申請データが作られてしまったデータについて、
途中からのフロー(未申請から申請したり、申請された物を承認するとき)で、
ステータスを回すときに

record.ステータスの履歴の記録.value

の中身をconsole.logで出したところ、[] となっており、
record.ステータスの履歴の記録.value[0] がERRORになって処理を進められませんでした。
そこで、もともと作ってたif文の一つ目の分岐に以下のようにテーブルの中身がないか
確認し、なければ、テーブルに行を追加する。みたいな処理を書いたのですが、
うまく①に入ってくれませんでした。
以下のソースのコメントの通りに動けばいいなと思ったのですが、
①に入るif文の条件の書き方をどうすればいいか教えていただくことはできますでしょうか。
②と③には想定通りで入っています。(最初作ったのは、②と③の分岐です)

(function() {
“use strict”;

// 1行目が空行か確認する
function isEmptyRow(tableRow){
var result = true;
for(var key in tableRow){
console.log(tableRow[key]);
if(tableRow[key].value !== ‘’){
result = false;
break;
}
}
console.log(result);
return result;
}

function historySet(record, event, user){
var addData = {};
addData.value = {};
addData.value[“ステータス変更日時”] = {
type: “DATETIME”,
value: moment().format(“YYYY-MM-DDTHH:mmZ”)
};
addData.value[“ステータス変更”] = {
type: “SINGLE_LINE_TEXT”,
value: event.status.value+“→”+event.nextStatus.value
};
addData.value[“変更者”] = {
type: “SINGLE_LINE_TEXT”,
value: user.name
};
addData.value[“アクション”] = {
type: “SINGLE_LINE_TEXT”,
value: event.action.value
};
record[“ステータスの履歴の記録”].value.push(addData);
//return event;
}

kintone.events.on([“app.record.detail.process.proceed”], function(event){
var record = event.record;
var user = kintone.getLoginUser();
if(!record.ステータスの履歴の記録.value){
// テーブルの1行目がない状態で既に申請データが新規作成されてしまった場合(履歴テーブル作成前のデータ対応)
console.log(“①”);
historySet(record, event, user);
} else if (isEmptyRow(record.ステータスの履歴の記録.value[0].value)){
// 通常の申請のテーブル1行目(申請するときは、空で保存されたテーブル1行目に履歴データを入れる)console.log(“①”);
console.log(“②”);
record[“ステータスの履歴の記録”].value[0].value[“ステータス変更日時”].value = moment().format(“YYYY-MM-DDTHH:mmZ”);
record[“ステータスの履歴の記録”].value[0].value[“ステータス変更”].value = event.status.value+“→”+event.nextStatus.value;
record[“ステータスの履歴の記録”].value[0].value[“変更者”].value = user.name;
record[“ステータスの履歴の記録”].value[0].value[“アクション”].value = event.action.value;
} else {
// 2行目以降
console.log(“③”);
historySet(record, event, user);
}
return event;
});

})();

 

 

配列の長さは 配列.length で取得できますので、それで条件分岐したらいかがでしょうか。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/length

例: 配列が空の場合、処理を終える

if(record["ステータスの履歴の記録"].value.length === 0) return event;

村濱一樹様

.length で取得できるのですね!教えていただき、ありがとうございます!

こちらのやり方で実装ができました!!