現在日付と担当者の取得について

問合せ管理アプリを使用しています。

対応状況(ドロップダウン)(フィールドコード名:対応状況)より「未完了」「対応中」「完了」で

「対応中」に変更した場合は、CS担当者(フィールドコード名:CS担当者)にログインしているユーザー名をセットし、

「完了」に変更した場合は終了日時(フィールドコード名:終了日時)に現在の日時をセットしたいと考えています。

 

初心者でいろいろ検索しながら作成してみましたが、「対応中」に変更した場合のCS担当者のセットは出来ましたが、終了時間についてはレコードの保存ボタンがクリック出来ない状態です。

ご教授お願い致します。


 

(function(){

‘use strict’;

// プロセス管理アクション実行時
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function ChangeArea(event){
var record = event.record;

switch(record[‘対応状況’][‘value’]){

// 対応状況が「対応中」の場合、担当者を設定する
 case “対応中”:
var user = kintone.getLoginUser();
record[‘CS担当者’][‘value’][0] = {code : user.code};
break;

 // 対応状況が「完了」の場合、終了日時を現在の時間に更新する
 case “完了”:
record[‘終了日時’][‘value’] = moment().format(“YYYY-MM-DDTHH:mmZ”);
break;

}
return event;
});

})();


Rie さん

コード自体は、エラーなしで実行できるように思われます。

>終了時間についてはレコードの保存ボタンがクリック出来ない状態です。

もしかすると、フィールドコードが「終了日時」ではなく、「終了時間」でしょうか?

動かない?そんな時はデバッグをしてみよう!入門編」を参照して、エラー内容を確認してみてください。

あと、気になった点をいくつか

・「未完了」「対応中」「完了」
意味的には「未完了」ではなく、「未着手」でしょうか?

・プロセス管理
業務フローによっては、対応状況の管理にドロップダウンではなく、プロセス管理機能を使われてもいい気がします。

 

rex0220様

ご返信ありがとうございます。

フィールドコードは再度確認致しましたが「終了日時」でした。

エラー内容を確認したところ

Uncaught ReferenceError: moment is not defined
    at Vca.kt (show.js:242)
    at new ri (show.js:118)
    at Vca (show.js:242)
    at show.js:242
    at f.Uy (show.js:120)
    at Gi (show.js:122)
    at Di (show.js:122)
    at ri.FC (show.js:1148)
    at ki (show.js:118)

と表示されています。

終了日時は「日時」の項目を追加して、初期値は空欄(レコード登録時の日時を初期値にするもチェック無し)で作成しています。

momentの記載方法についても調べてみましたが (moment(date)等に変更等)やはり「保存」ボタンがクリック出来ない状態です。

大変恐縮ですが、お教え願いないでしょうか。

~補足~

プロセス管理も拝見させていただきました。

利用してみましたが、今回はドロップダウンの対応でいければと思っております。

 

 

 

Moment.js の指定がされていないようです。

Moment.js を利用して、日時フィールドのフォーマットをカスタマイズする を参考にして、

Moment.js の指定を行ってみてください。

 

rex0220様

ご返信ありがとうございます。

Moment.jsの指定をしたところ、終了日時の取得が出来る様になりました。

この度はご教授いただき本当にありがとうございました。

今後とも宜しくお願い致します。

度々申し訳ございません。

上記の条件に③の条件を追記したところ、

SyntaxError: missing ] in index expressionとなり、うまく処理が出来ません。

どこかで配列初期化構文のエラーがあります。閉じ括弧(“]”)かカンマ(“,”)が不足している可能性があるとのエラーですが、

初心者の私がみたところではどこが不足しているのかわかりません。根本的に間違っているのでしょうか。。

ご教授下さいますようお願い致します。


(function(){

‘use strict’;

// プロセス管理アクション実行時
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function(event){
var record = event.record;

switch(record[‘対応状況’][‘value’]){

// 対応状況が「対応中」の場合、担当者を設定する
case “対応中”:
var user = kintone.getLoginUser();
record[‘CS担当者’][‘value’][0] = {code : user.code};
record[‘開始日時’][‘value’] = moment().format(“YYYY-MM-DDTHH:mmZ”);
break;

// 対応状況が「完了」の場合、終了日時を現在の時間に更新する
case “完了”:
record[‘CS担当者’][‘value’][0] = {code : user.code};
record[‘終了日時’][‘value’] = moment().format(“YYYY-MM-DDTHH:mmZ”);
break;

// ③対応状況が「完了」でかつ開始日時が空欄の場合に開始日時に現在の時間を更新する
case “完了”: if(record['開始日時][‘value’]==null){
record[‘開始日時’][‘value’] = moment().format(“YYYY-MM-DDTHH:mmZ”);
break;}

}
return event;
});

})();

’ の抜けがあります。

record['開始日時]

 

あと、二つ目の case “完了” は、エラーにはなりませんが実行されません。

直すとしたら、下記のような感じです。

ただし、完了後に何らかの変更を行うと終了日時が進んでいきます。

(function() {
'use strict';

// プロセス管理アクション実行時
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
var record = event.record;

switch (record['対応状況']['value']) {

// 対応状況が「対応中」の場合、担当者を設定する
case "対応中":
var user = kintone.getLoginUser();
record['CS担当者']['value'][0] = { code: user.code };
record['開始日時']['value'] = moment().format("YYYY-MM-DDTHH:mmZ");
break;

// 対応状況が「完了」の場合、終了日時を現在の時間に更新する
case "完了":
record['CS担当者']['value'][0] = { code: user.code };
record['終了日時']['value'] = moment().format("YYYY-MM-DDTHH:mmZ");

// ③対応状況が「完了」でかつ開始日時が空欄の場合に開始日時に現在の時間を更新する
if (record['開始日時']['value '] == null) {
record['開始日時']['value'] = moment().format("YYYY-MM-DDTHH:mmZ");
break;
}
break;

}
return event;
});

})();

 

構文エラーについては、エディタにエラー表示がされるものを使われると、分かりやすいですよ。

下記は、プラグインの JSEdit の表示例です。

 

早急のご返信本当にありがとうございました。

ちゃんと見ていない証拠ですね。。。

お手数をおかけ致しまして本当にすみませんでした。

上記のプラグインも早速適用致しました。

また、”完了”の時の
var user = kintone.getLoginUser();

の定義も抜けていたので、追加し、実行したところ思う通りの処理になりました。

ご教授いただき本当にありがとうございました。

今後とも宜しくお願い致します。