Kintoneのカスタマイズの件で質問があります。(

Kintoneのカスタマイズの件で質問があります。

■実現したいこと

・日付のフィールドにあらかじめ決められた日数を自動入力
(例)「登録日」という日付フィールドに入力した日の2週間後(14日後)を自動で入力
・一旦は自動で入力されるが、後から手動でも変更可能とする。

<質問1>
日付フィールドを用いて、「2週間後」などの値を設定することはできますでしょうか?
自分なりに調べてみたのですが、方法がみつからず代替策として、計算フィールドを活用
することで14日後の指定はできるようになりました。

<質問2>

<質問1>を加味し、「完了希望日」フィールドは”計算” を利用し、
計算式には以下の設定を入力しております。

   submitDate + 14 \*24\*60\*60   #submitDate は「登録日」の意味です。  

さらに、手動で修正ができるようにしたく、JavaScriptで以下のカスタマイズを行ったのですが、
フィールドはグレーアウトされたままで、後から修正ができない状態です。


kintone.events.on([‘app.record.edit.show’, ‘app.record.create.show’], function(event){
event.record[“compRqstDate”].disabled = false; //完了希望日
return event;
});

以上、よろしくお願いいたします。

Sophia様

お世話になっております.
cstapの江田と申します.

計算フィールドは、JavaScriptを用いても書き換えることができません。 https://developer.cybozu.io/hc/ja/articles/201941984#step4

計算フィールドを使わず、日付フィールドで実装可能かと思います。

(function(){"use strict";varincreaseDates=function(originDate,dates){vartargetDay=newDate((originDate.getTime()+dates\*24\*60\*60\*1000));returntargetDay.getFullYear()+'-'+('0'+(targetDay.getMonth()+1)).slice(-2)+'-'+('0'+targetDay.getDate()).slice(-2);}kintone.events.on(['app.record.create.show','app.record.edit.show',],function(event){event.record.日付.value=increaseDates(newDate(),14);returnevent;});})();

江田様

 

早々のアドバイスありがとうございます。

内容を理解させていただき、アプリへ適用させていただきます。

 

 

 

江田様

 

実際にアドバイス頂きました内容を実装したところ、以下の壁にぶつかりました。

自動で入力させたい値は、本日から14日後ではなく、別のフィールド[依頼日]の値から14日後です。

(例)[依頼日]に 2019-01-01 と入力した場合に、自動で[完了希望日]に 2019–1-15 と入力される

 

実際に実施したいことは

(1)[完了希望日]フィールドの初期設定値として、[依頼日(submitDate)]の2週間後をプリセット

   (2) プリセットした値を後から変更が可能

 

しかしながら、(2)に関しましてもレコードを編集する度に日付がアップデートされてしまい

固定した値を登録することができないことに気がづきました。

初回登録時に一度だけ値を入力し、後から編集は可能でしょうか?

 

以上、アドバイスの程よろしくお願いいたします。

Sophia様

お世話になっております.

他のフィールドをもとにするという要件、見落としておりました。
申し訳ございません。

以下のコードで実装できるかと思います。

(function(){"use strict";varincreaseDates=function(originDate,dates){vartargetDay=newDate((originDate.getTime()+dates\*24\*60\*60\*1000));returntargetDay.getFullYear()+'-'+('0'+(targetDay.getMonth()+1)).slice(-2)+'-'+('0'+targetDay.getDate()).slice(-2);}kintone.events.on(['app.record.create.show','app.record.create.change.依頼日','app.record.edit.change.依頼日',],function(event){event.record.完了希望日.value=increaseDates(newDate(event.record.依頼日.value),14);returnevent;});})();

江田様

 

度々すみません。

(2)に関しましては、スクリプトを以下のように修正することで、特定のフィールド(今回は[依頼日])が

新規が変更が無い場合は、スクリプトが動かないようにすることができました。

 

kintone.events.on([
‘app.record.create.change.submitDate’,
‘app.record.edit.change.submitDate’,
// ‘app.record.create.show’,
// ‘app.record.edit.show’,

 

しかしながら、プリセットの値を 「本日から14日後」 ではなく、 「依頼日から14日後] とさせる方法

につきまして、アドバイスをお願いいたします。

 

 

Sophia様

お世話になっております.

event.record.完了希望日.value = increaseDates(newDate(event.record.submitDate.value),14);

とするとよいと思います。

江田様

 

江田様の16:03のアップデートを気づかずに、16:10の質問をしてしまいました。

ありがとうございます。 アドバイス頂きました内容を確認させていただきます。