レコード作成・編集時に、テーブルに自動でパスワードを入れたい

レコードの新規作成時、及び編集時に、テーブルの指定したフィールドに8文字のパスワードを自動で生成させようとしていますが、ifで入力状況の条件分岐をさせる部分が上手くかず、投稿しました。

やりたいことは下記です。
・レコード新規作成、及び編集の完了時(保存時)に、テーブルの指定フィールドにパスワードを自動で入れる。
・レコード編集時、既にパスワードが反映されていることがあるので、ifを使ってフィールドが空欄の時のみ反映させる。

 

恐らくif内の記述が間違っていると思うのですが、どなたかご教示いただけないでしょうか。作成したプログラムは下記です。

切り分けとして、forを使ってテーブル内のフィールド全てにパスワードを反映するところまでは行えました。

(function() {
"use strict";

//8文字のパスワードを作成する関数を定義。
//参考:https://www.ajaxtower.jp/js/function/index2.html
function createPass(){
// 生成するパスワードの長さ
var l = 8;
// 生成するパスワードに含める文字
var c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

var cl = c.length;
var password = "";
for(var i=0; i<l; i++){
password += c[Math.floor(Math.random()*cl)];
};
return password;
};


kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {

// フィールドコード"Table"のレコードオブジェクトを取得
var record = event.record;
// Tableの長さを取得
var tableLength = event.record['Table']['value'].length;

// Tableの長さ文だけ繰り返す。
for(var i = 0; i < tableLength; i++){
// Tableのi番目のパスワードフィールドの値が空欄の場合実行する。
if (record[i].value['k_password'].value === ''){
record['Table']['value'][i]['value']['k_password']['value'] = createPass();
};
};
return event;
});
})();

 

 

dai さん

kintoneでJavaScriptを書くときに気をつけるべき空判定の知識 が参考になると思います。

if (!record[i].value[‘k_password’].value)

 

rex0220さん

返信ありがとうございます。
アドバイスいただいた内容で、無事に想定した動きができました!
ありがとうございます。

頂いたリンクの内の情報をずっと探していたのですが、中々見当たらず
困っていたので助かりました。

他にもナレッジノート見てみます。