1 回答
- 321
残念ながら既定値として「3日後」のように動的な設定をすることはできません。
ScriptRunner for Jira の Behaviours 機能を使用したり、
Javascript を適用することで設定できるようです。参考
Jiraの課題作成時に期限日を現時点から3日後にデフォルト設定したいフィールドの説明欄に以下を記載して実現してみました。
<script> var dateField = document.getElementById('customfield_11906'); var date = moment(); var dateFormat = document.querySelector('[name="ajs-date-dmy"]').getAttribute('content'); var days = 3; while (days > 0) { date = date.add('days', 1); // 土日の場合はカウントしない if (date.day() === 6 || date.day() === 0) { continue; } else { days--; } } var dateString = date.format(JIRA.translateSimpleDateFormat(dateFormat)); dateField.value = dateString; </script>
"customfield_11906" の部分は置き換えてください。
- Shuzaburo Doba
すみません、フィールドの説明欄に上記を設定すると
最近の Jira のバージョンですとカスタムフィールドの画面に "JIRA.translateSimpleDateFormat()" が定義されていないようで
画面が読み込まれなくなってしまうようでした。<script> try{ var dateField = document.getElementById('customfield_11906'); var date = moment(); var dateFormat = document.querySelector('[name="ajs-date-dmy"]').getAttribute('content'); var days = 3; while (days > 0) { date = date.add('days', 1); // 土日の場合はカウントしない if (date.day() === 6 || date.day() === 0) { continue; } else { days--; } } var dateString = date.format(JIRA.translateSimpleDateFormat(dateFormat)); dateField.value = dateString; } catch (e) { console.log(e.message); } </script>
こちらの内容で "customfield_11906" を変更してください。
- 荒木治
ありがとうございます。
カスタムフィールド画面が読み込まれなくなりましたがサポートで解決しました。
こちらは日付ピッカーの設定でしょうか?日時ピッカーだと期待どおりにならないようです。
- Shuzaburo Doba
すみません、"日時" ピッカーでしたね...
以下でいかがでしょうか...?
<script> AJS.toInit(function(){ function setDateTime() { try { var dateTimeField = document.getElementById('customfield_11725'); var dateTimeFormat = AJS.Meta.get('date-complete'); var date = moment(); var addDays = 3; while (addDays > 0) { date.add('days', 1); // 土日をスキップ if (date.days() === 6 || date.days() === 0) { continue; } else { addDays--; } } var dateTimeString = date.format(JIRA.translateSimpleDateFormat(dateTimeFormat)); dateTimeField.value = dateTimeString; } catch (e) { console.group(); console.error('日時ピッカーの既定値'); console.error(e.message); console.groupEnd(); } } setDateTime(); JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, context, reason){ if (reason === JIRA.CONTENT_ADDED_REASON.dialogReady) { setDateTime(); } }); }); </script>
- 荒木治
日付ピッカーはうまくいきますが日時ピッカーの場合は反映しないようです。
・日付ピッカー
・日時ピッカー
・結果
なお、既定値はいずれもブランクの状態です。
- Shuzaburo Doba
画面を拝見したところ、
"QC期限" の説明に「文書管理用」が表示されているようでした。編集画面の説明にはスクリプトしか記載されていなく
「文書管理用」が表示されることはないかと思うのですが...
(少なくとも画面上では...)フィールド構成の方でフィールドの説明に何か設定されているでしょうか...?
フィールド構成の方が優先されてしまいスクリプトが消されるので、
ご確認いただけると幸いです。コンソールにエラーが出るようにしてありますので、
もしフィールド構成の方が原因ではないようでしたら
F12 のコンソールを開いた状態で課題作成画面を表示し、
なにか出てこないかご確認いただいてもよろしいでしょうか。 - 荒木治
ご指摘のとおり、フィールド構成の説明が上書きされているようでした。こちらを削除したら想定した動作となりました。運用がひとつ楽になりました。ありがとうございます!
- Shuzaburo Doba
ありがとうございます!
よかったです。
- 荒木治
すいません。追加の質問で恐縮ですが、3日後の時間を固定にすることは可能でしょうか。
- Shuzaburo Doba
以下でいかがでしょうか...?
<script> AJS.toInit(function(){ function setDateTime() { try { var dateTimeField = document.getElementById('customfield_11725'); var dateTimeFormat = AJS.Meta.get('date-complete'); var date = moment(); var addDays = 3; while (addDays > 0) { date.add('days', 1); // 土日をスキップ if (date.days() === 6 || date.days() === 0) { continue; } else { addDays--; } } // 時刻は固定 date.set('hour', 18); date.set('minute', 00); var dateTimeString = date.format(JIRA.translateSimpleDateFormat(dateTimeFormat)); dateTimeField.value = dateTimeString; } catch (e) { console.group(); console.error('日時ピッカーの既定値'); console.error(e.message); console.groupEnd(); } } setDateTime(); JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, context, reason){ if (reason === JIRA.CONTENT_ADDED_REASON.dialogReady) { setDateTime(); } }); }); </script>
時 "18" と 分 "00" を任意の値に変更ください。
- 荒木治
ご指南いただいたとおり設定しましたが、設定前と同様に3日後の現在時刻になってしまいます。
新規作成したカスタムフィールドでは意図したとおりになったので何かゴミが残っているのでしょうか。。
- 荒木治
フィールド構成の説明項目が削除しても復活してしまう形で残っていました。カスタムフィールドを再作成した解決しました。ありがとうございました。
コメントを追加...
日時ピッカーの既定値を「3日後の現在時刻」にする方法はありますか?