6 27, 2022 11:25 AM
APIで日付型のフィールドに日付を登録したいのですが登録されず困っています。
APIで送信している書式=YYYY-MM-DD
HubSpot側のフィールドタイプ=日付入力
↓ここを参照しました。
https://developers.hubspot.jp/docs/api/faq
「HubSpotのAPIによるタイムスタンプの形式はどのように設定すればよいですか?」
ちなみにAPI送信はWordpressのプラグインのContact Form HubSpot Pluginを利用しています。
何でも結構ですのでアドバイスいただけますと幸いです。
解決済! 解決策の投稿を見る。
6 27, 2022 11:20 PM - 編集済み 6 27, 2022 11:21 PM
@hideking さま、
HubSpotのForm APIですが、YYYY-MM-DDの形式では実は登録されません。
(よくある質問が誤りを記載してますね😅)
以下に記載のように、UNIXタイムスタンプに変換して、APIをコールする必要がございます。
https://legacydocs.hubspot.com/docs/faq/how-should-timestamps-be-formatted-for-hubspots-apis
以上、ご参考になれば幸いです。
6 27, 2022 11:20 PM - 編集済み 6 27, 2022 11:21 PM
@hideking さま、
HubSpotのForm APIですが、YYYY-MM-DDの形式では実は登録されません。
(よくある質問が誤りを記載してますね😅)
以下に記載のように、UNIXタイムスタンプに変換して、APIをコールする必要がございます。
https://legacydocs.hubspot.com/docs/faq/how-should-timestamps-be-formatted-for-hubspots-apis
以上、ご参考になれば幸いです。
6 28, 2022 1:58 AM
教えていただきありがとうございました!
確かにUNIXタイムスタンプにしたらうまくいきました!
タイムゾーンがUTCでなければいけないのに、Asia/Tokyoでやってしまってしばらくハマってしまいました。最終的にはそちらに書かれておりました通り、
時分秒がすべて0でタイムゾーンがUTCのUNIXタイムスタンプだけが登録できました。
ありがとうございました!
6 27, 2022 12:02 PM
@hideking
リクエスト自体は200番で成功しているでしょうか?他のプロパティの更新状況はいかがでしょうか?
日付プロパティの更新成功例、以下になりますのでご参考ください。
6 27, 2022 1:32 PM
さっそくご助言ありがとうございます!
他のプロパティは正常に登録されています。
Contact Form HubSpot Pluginの管理画面上では送信成功しています。
Chromeのネットワークで見ますと
リクエスト URL: https://forms.hubspot.com/collected-forms/submit/form
リクエスト メソッド: POST
ステータス コード: 204
と出ており、200番で成功しているように見えます。
まだ使い始めのため添付いただいたようなモニタリング画面がどこにあるかもわからない状態でして、調べていたら開発者アカウントというものがあることを知り、さっそく登録してテストアカウントを作成しました状態です。
アプリを作成してそこから
Contact Form HubSpot Pluginと接続できたらモニタリングができるのかなと考えましたが、どうやらそういったものではなさそう?というところで止まっております。。
サードパーティ製の外部アプリとの通信をモニタリングする方法はありますでしょうか。。
6 27, 2022 3:16 PM
@hideking
あ、なるほど。すみません、画像はMake(Integromat)で試しにAPIでUpdateをかけた時のものです。
下の画像のように直接フォームを使用すると恐らく暗号化されていて見えないのかなと思いますが、APIを使用してwordpressのPHPなどがPOSTしているのであれば、Dev Toolのフォームデータのところにあるはずです。
開発者アカウントは主にアプリを作成する際などに使用します。
プラグインがDateのフォーマットをどうしてくれているかどうかですよね。
6 28, 2022 1:50 AM
ご丁寧にありがとうございました!
Makeというものがあるのですね。おもしろそうですのでこれはこれでまた利用させていただきたいと思います。
ご助言いただきましたことなど色々いじっているうちに、色々認識不足がわかってきまして、何とか解決はできましたのでご報告させていただきます。
結論を申しますと、UNIXタイムスタンプのミリ秒形式でタイムゾーンがUTCのみ受け付けてくれることがわかりました。Asia/Tokyoの+9時間されたものはNGです。時分秒は必ずすべて0である必要があります。
例えば、
2022/7/1 00:00:00.000 UTCは
UNIXタイムスタンプでは1656633600000で受け付けますが、
2022/7/1 00:00:00.000 Asia/Tokyoは
UNIXタイムスタンプでは1656601200000で受け付けません。
これは
2022/7/1 09:00:00.000 UTCと認識されるからかなと思います。
ヘルプを見ますと
https://developers.hubspot.jp/docs/api/faq
の中ほどの
「日付プロパティー値を設定する際は、ISO 8601の完全な日付形式を使用することをお勧めします。」
という記述のISO 8601の完全な日付形式はYYYY-MM-DDのことですが、これは今回成功しませんでした。
さらに
「2015-05-01は、2015年5月1日を表します。ミリ秒単位のタイムスタンプを使用することもできますが、必要な日付のUTCの深夜の値に設定する必要があります。 」
「UTCの深夜以外の値を設定しようとすると、エラーが返されます。HubSpotの日付プロパティーでは、アカウントやユーザーのタイムゾーン設定に関係なく、設定されている特定の日付が常に表示されます。」
という記述は、今回成功したUNIXタイムスタンプと合います。
誤解してましたのが、通信はPHPサーバー→HubSpotのためChromeでは確認できないものでした。最初にChromeで見たらHubSpotにPOSTしていたのでJSで送っていると思い込んでましたが、これは
設定>HubSpot以外のフォーム>ウェブサイトフォームからデータを収集
がONになっているからでした。
YYYY-MM-DD形式がだめだったのは、もしかしたらContact Form HubSpot Pluginが勝手にAsia/TokyoタイムゾーンでUNIXタイムスタンプに変換してしまっているからかもしれませんが、これはまた時間があるときに見てみたいと思います。たいへんお手数をおかけしました。ありがとうございました!