キントーンカスタマイズの初心者です。
製造現場での時刻入力を簡素化するために、時刻項目をchangeイベントに登録して、現在時刻を自動入力するスクリプトを作成しました。以下はコード(抜粋)です。
var record = event.record;
if (record[‘時刻修正’][‘value’].length < 1) {
var table_row = event.changes.row;
var jikan= new Date();
var hh = jikan.getHours();
var mm = jikan.getMinutes();
var jikan2 = hh + “:” + mm;
table_row.value[‘段取開始’][‘value’] = jikan2;
return event;
PC画面では自動入力ができるのですが、モバイル画面では【時刻の形式が不正です】という黄色帯のエラーメッセージが項目の下に表示されます。(入力自体でできているようです)。この現象は、PC版でurlに /m で開くモバイル用画面でも同じ現象になっていますので、モバイルの機種に依存する現象ではないようです。
どなたか、この現象への対処をご存じでしたら、方法をご教示じただけますでしょうか?
お手数ですがよろしくお願いします。
全容が分からないので、以下の前提で進めます。
画像のように「時刻」というサブテーブル上のフィールドがあり、このchangeイベントでサブテーブル外の「時刻修正」というチェックボックス(lengthを参照しているので配列を扱うフィールドとしています)にチェックが入っていない場合のみ、現在時刻をサブテーブル上の「段取開始」に代入したいものの、入力しようとする「時刻」フィールドに入力できない
モバイル版のみ時刻フィールドは時と分を分けて入力し、全て入力されるまでは値がundefinedになる(その状態でreturn eventするとundefinedが再代入され空白になる)ことが原因ではないかと思われます。
if文にその時刻フィールドの値の判定を追加すれば良いと思います。
(function() {
'use strict';
kintone.events.on([
'app.record.create.change.時刻', 'app.record.edit.change.時刻',
'mobile.app.record.create.change.時刻', 'mobile.app.record.edit.change.時刻'
], function(event) {
var record = event.record;
var table_row = event.changes.row;
if (!record['時刻修正']['value'].length && table_row.value['時刻'].value) {
var jikan = new Date();
var hh = jikan.getHours();
var mm = jikan.getMinutes();
var jikan2 = hh + ":" + mm;
table_row.value['段取開始']['value'] = jikan2;
return event;
}
});
})();
ありがとうございます。少し動かしてみて、理解できました。