RayKit よくある質問

履歴オブジェクトで日時の変更をRaySheetで確認する方法

Salesforceのオブジェクトにて項目履歴管理を有効にしている場合に作成される履歴オブジェクトでは、変更前の値(元の値)と変更後の値(新しい値)が確認できます。
これらの項目はanytypeといデータ型で管理されていますが、RaySheetでこの項目を表示すると登録されている値がそのまま表示されます。
このため、日時形式の値を変更した場合には、Salesforceの日時データ(エポックミリ秒)がそのまま表示されてしまいます。

これを日時形式で表示するには以下のように設定します。

<設定手順>

  1. RaySheetで対象のビューを表示して、基本デザインウィンドウを表示します。
  2. ビューに「元の値」、「新しい値」、「データ型」の項目を配置します。
  3. 「数式列」の右側にある+マークをクリックして、「数式列を追加」ダイアログに以下のように設定して[OK]ボタンをクリックします。
    • 元の値を設定する場合
      数式:IF([データ型]="DateTime",TEXT([元の値]/1000/(24*60*60) + DATE(1970,1,1) + TIME(9,0,0),"yyyy/MM/dd hh:mm:ss"),IF([データ型]="DateOnly",TEXT([元の値]/1000/(24*60*60) + DATE(1970,1,1),"yyyy/MM/dd"),[元の値]))
    • 新しい値を設定する場合
      数式:IF([データ型]="DateTime",TEXT([新しい値]/1000/(24*60*60) + DATE(1970,1,1) + TIME(9,0,0),"yyyy/MM/dd hh:mm:ss"),IF([データ型]="DateOnly",TEXT([新しい値]/1000/(24*60*60) + DATE(1970,1,1),"yyyy/MM/dd"),[新しい値]))

    上記の数式では、
    • データ型が"DateTime"の場合、元の値(エポックミリ秒)を / 1000でUnixTime(秒単位)に変換
    • (24時間*60分*60秒)で割ることでシリアル値と同じ単位(日単位)に変換
    • シリアル値は1970/1/1から開始のため、DATE(1970,1,1)を加算することでシリアル値に変換
    • TIME(9,0,0)を加算することでグリニッジ標準時から日本時間に変換
    • TEXT関数で日時書式に変換
    • データ型が"DateOnly"の場合も上記と同じ処理を行い、TEXT関数で日付形式に変換
    • それ以外の場合は、値をそのまま表示する
    という処理をしています。
  4. 「元の値」、「新しい値」、「データ型」の列の列ヘッダを右クリックして[列の設定]を表示し、「非表示」をオンにします。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

0 コメント

記事コメントは受け付けていません。