Autify で Salesforce を動かしてみよう～ vol.2 JSステップ・現在の日時

# はじめに
- Autify で Salesforce を動かしてみよう、と思い記事にしてみます。
- TIPSなども記載できれば、と考えています。

#### ご了承ください
- まだまだ勉強中の部分もあります。間違っている箇所もあるかもしれません。
- Salesforce、Autify は、この時点のバージョン(2021年1月頃) での内容になります。今後、仕様変更が変わることによって、内容の通りにならない可能性もあります。ご了承ください。
 - また、URLなども変更になっている可能性もあります。

# 前回まで
- Autify で Salesforce を動かしてみよう～ vol.0 準備編
 - https://qiita.com/xx_mana/items/107eb97dcc0da26daeb8
- Autify で Salesforce を動かしてみよう～ vol.1 ログインへの道 
 - https://qiita.com/xx_mana/items/7f532a977184037ea80c


# 動作できるようになったので
日付項目、日時項目にAutifyを実行したときの日時を設定できるようにしてみたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/932545d2-2703-f4a0-0622-1205a9e5a446.png)

横のリンクをクリックするとその日付、日時が入る仕組みが用意されていますが…
これは見なかったことにします:flushed:

レコーディングをします。

日付、日時はレコーディング時に入力しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/00103935-42f1-5265-2baa-a55e5282105c.png)

実行すると、その日付、日時で入力されてOKとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/10a7c924-58bc-9574-4d24-53ad997871b0.png)

当然、このままだと、常に同じ日付、日時になりますね。

日付や日時をAutifyテスト実施したときの日付・日時に設定出来たら、どうでしょうか。


- 日時が動的になることによるバグを発見できるかもしれません。
 - 夜中、休日にもそのタイミングの日時にすることができますね。

# やってみる

JavaScript ステップ (ステップ9) を用意しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/388376dd-0631-50e3-e534-c7ee867c6203.png)

```JS:ステップ9
var date = new Date();
var ymd  = date.getFullYear() + 
           '/' + ('0' + (date.getMonth() + 1)).slice(-2) +
           '/' + ('0' + date.getDate()).slice(-2);
return ymd;
```


JavaScript ステップ (ステップ11) を用意しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/5e27be78-984b-bbd4-503e-b0990c0336c4.png)

```JS:ステップ11
var date = new Date();
var ymdhms  = date.getFullYear() +
              '/' + ('0' + (date.getMonth() + 1)).slice(-2) +
              '/' + ('0' +  date.getDate()).slice(-2)       +
              ' ' + ('0' +  date.getHours()).slice(-2)      +
              ':' + ('0' +  date.getMinutes()).slice(-2)    +
              ':' + ('0' +  date.getSeconds()).slice(-2);
return ymdhms;
```

実行した結果、成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/12a3fdd2-4100-5875-9701-a5c217375bed.png)

時刻に注目です。 10:06 になるはずでしたが、01:06 になっています・・・う～ん。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/39f11135-76f9-358a-8119-35e219a050a4.png)

時差 (+9時間) を考慮する必要がありそうです。

ステップを書き換えます。

JTS_offset の行の 9 が 9時間の意味ですね。

```JS:ステップ9
var timezone_offset = new Date().getTimezoneOffset() * 60 * 1000;
var JST_offset = 9 * 60 * 60 * 1000;

var date = new Date(Date.now() + timezone_offset + JST_offset);
var ymd  = date.getFullYear() + 
           '/' + ('0' + (date.getMonth() + 1)).slice(-2) +
           '/' + ('0' + date.getDate()).slice(-2);
return ymd;
```

```JS:ステップ11
var timezone_offset = new Date().getTimezoneOffset() * 60 * 1000;
var JST_offset = 9 * 60 * 60 * 1000;

var date = new Date(Date.now() + timezone_offset + JST_offset);
var ymdhms  = date.getFullYear() +
              '/' + ('0' + (date.getMonth() + 1)).slice(-2) +
              '/' + ('0' +  date.getDate()).slice(-2)       +
              ' ' + ('0' +  date.getHours()).slice(-2)      +
              ':' + ('0' +  date.getMinutes()).slice(-2)    +
              ':' + ('0' +  date.getSeconds()).slice(-2);
return ymdhms;
```

正しい時刻になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/e40bea36-b829-f3f2-93c9-33ea96ee2265.png)


# その他
- Autify スニペットにも記載されていますね。
 - https://github.com/autifyhq/autify-javascript-snippets/blob/master/snippets/generate-random-value.js


# 変更履歴
- なし。