レコードの新規作成時、及び編集時に、テーブルの指定したフィールドに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;
});
})();