躓きポイントとしてよく上がってきているので実コードで紹介します
要件
Hubspot画面上から作ったプロパティは日付データしか入らず、時間の情報は入りません
そういった場合、どのようにPOSTの値を整えればいいのか
Hubspot側が求める要件は下記の通りでした
- タイムゾーンはUTC
- 時刻は0時0分0秒
- Unixタイムスタンプ
- ミリ秒までにする
実装
テストで取引の作成をします
日付のオブジェクトは
Carbon クラスを前提に実装した場合を示します
// 日付プロパティ整え
// $datePropatyには 1427997766000 のような数値が入ります
$datePropaty = $carbonObj->updated_at
->timezone('UTC')
->hour(0)->minute(0)->second(0)->getTimestampMs();
$dealsProperties = [
'datePropaty' => $datePropaty,
];
$simplePublicObjectInput = new SimplePublicObjectInput([
'properties' => $dealsProperties,
]);
$apiResponseForCreateDeals = $hubspot->crm()->deals()->basicApi()->create($simplePublicObjectInput);
作成された取引のプロパティ値の詳細を見ると値が入っています
表示上のタイムゾーンはHubspot上の設定に基づきます。
最後に
Hubspotの日付プロパティのAPIによる更新方法を紹介しました
何でこんな仕様になっているんだろう....
日付の更新処理があるところが多ければhelperに切り出してもいいかなと思ってます。
弊社では、一緒に働いてくれるエンジニアを募集しています。
↓興味のある方はこちらから↓
Wantedly - スタジオアンビルト株式会社
こんなWebサービスを作っています。
・マドリー
・Studio Unbuilt