🎉

Pleasanter:期限付きテーブルのエディタで「開始」入力時に既定値を加算した日時を「完了」に自動入力するスクリプト

に公開

Pleasanterの期限付きテーブルで、開始(StartTime)項目を入力すると開始=完了あるいは環境によっては開始の一日後が完了(CompletionTime)項目に入力されますが、会議室予約の帳票として会議室利用は原則1時間の場合に、開始に1時間加算したものを完了に自動入力するスクリプトです。
完了項目の「エディタの書式」(EditorFormat値)を取得したかったのですが、スクリプトでは難しいようです。完了(CompletionTime)の文字数(10,16,19)で「エディタの書式」を判定してます。

StartTime_Add_CompletionTime
// 開始入力時に既定値(例:0日,1時間,0分,0秒)を完了にプラス
$p.on('change', 'StartTime', function(){
  const addDate = 0;
  const addHour = 1;
  const addMin  = 0;
  const addSec  = 0;
  // let stTime = $('#StartTime').val();
  let stTime = $p.getControl('StartTime').val();
  // let stTime = $p.getValue('StartTime');
  console.log('stTime:' + stTime)
  let stDate = new Date(stTime);
  console.log('stDate:' + stDate)
  let Y  =  stDate.getFullYear();
  let M0 =  stDate.getMonth();
  let M1 =  stDate.getMonth() + 1;
  // let D = stDate.getDate();
  let D = stDate.getDate() + addDate;
  // let H =  stDate.getHours();
  let H =  stDate.getHours() + addHour;
  // let m =  stDate.getMinutes();
  let m =  stDate.getMinutes() + addMin;
  // let S =  stDate.getSeconds();
  let S =  stDate.getSeconds() + addSec;
  console.log(Y,M1,D,H,m,S)

  let edDate = new Date(Y, M0, D, H, m, S);
  console.log('edDate:' + edDate)
  Y =  edDate.getFullYear();
  M0 = ('0' + (edDate.getMonth()    )).slice(-2);
  M1 = ('0' + (edDate.getMonth() + 1)).slice(-2);
  D =  ('0' + edDate.getDate()).slice(-2);
  H =  ('0' + edDate.getHours()).slice(-2);
  m =  ('0' + edDate.getMinutes()).slice(-2);
  S =  ('0' + edDate.getSeconds()).slice(-2);
  console.log(Y,M1,D,H,m,S)
  let cmpTime = $p.getControl('CompletionTime').val();
  let cmpTimeLen = cmpTime.length ;
  console.log('CompletionTime:' + cmpTime + '(' + cmpTimeLen + ')')
  let endDate;
  // <label for="EditorFormat">エディタの書式</label>   
  // 年月日 option:nth-child(1) Ymd 
  if(cmpTimeLen == 10){
    endDate = Y + '/' + M1 + '/' + D ;// YYYY/MM/DD
  }
  // 日付と時刻(分) option:nth-child(2) Ymdhm
  else if(cmpTimeLen == 16){
    endDate = Y + '/' + M1 + '/' + D + ' ' + H + ':' + m ;// YYYY/MM/DD HH:mm
  }
  // 日付と時刻(秒) option:nth-child(3) Ymdhms
  else if(cmpTimeLen == 19){
    endDate = Y + '/' + M1 + '/' + D + ' ' + H + ':' + m + ':' + S ;// YYYY/MM/DD HH:mm:SS
  }
  console.log('endDate:' + endDate)
  $p.set($p.getControl('CompletionTime'), endDate);
  console.log('CompletionTime:', $p.getControl('CompletionTime').val() )
})

Discussion