@A-imai
こんにちは、下記の方法はいかがでしょうか。
1. 下記のAPIでフォームの一覧を取得
https://legacydocs.hubspot.com/docs/methods/forms/v2/get_forms
※フォーム数が多い場合はレスポンスのデータ量が多くなるので注意
レスポンスは各フォーム情報の配列なので
各フォーム毎のguidを収集します。
※フォーム情報にはフォルダー情報が無いように思います。
下記のような処理で、特定フォルダーのフォームのみにフィルターするのはいかがでしょうか。
事前にフォルダー内のフォーム名を収集し、
APIで取得したフォーム情報の「フォーム名」をみて一致したフォームのみにフィルター
// レスポンス
[
{
"portalId": 62515,
"guid": "0033cf74de6a48c4ac5d805d72d69822", // ←この値を収集
"name": "Example Form Name",
"action": "",
...,
},
...
]
2. 下記のAPIで各フォーム毎の送信情報を取得
リクエスト:[1. ]で取得したフォームのguid
※おそらくですがエクスポート時の一部プロパティは
下記のように対応しているのではないでしょうか(未検証)
(エクスポート時のプロパティ:APIレスポンス)
Conversion Date:submittedAt
Conversion Page:pageUrl
// レスポンス
{
"results": [
{
"submittedAt": 1547130102576, // ←[Conversion Date]に対応してそうです。
"values": [
{
"name": "email",
"value": "example@example.com"
},
{
"name": "company",
"value": "Example Co"
},
{
"name": "phone",
"value": "123 555 4567"
}
],
"pageUrl": "https://www.example.com/form" // ← [Conversion Page]に対応してそうです。
},
...
}
フォーム毎の情報を収集する処理としては下記の流れかと思います。
上記[1. ]でフォームのguidを収集(必要に応じてフィルター)
フォームの数だけ下記を繰り返す
上記[2. ] でguidをリクエストしてフォーム毎の送信情報
※必要に応じてページング、APIの呼び出し制限を考慮
Option:必要であれば下記の方法でフォームのフィールド名を取得できます。
※上記 [2.] ではフォームの内部値がレスポンスされます。
(例:{‘label’: ‘メールアドレス’, name: ‘email’, …}
各フォーム毎のフィールド情報を下記のAPIで取得します。
https://legacydocs.hubspot.com/docs/methods/forms/v2/get_fields
レスポンスのフィールド情報 [label] からフィールド名を取得できます。
// レスポンス
[
{
...
'label': 'LastName', // フィールド名
...
'name': 'lastname', // 内部値
...
},
...
]
参考になれば幸いです。
@natsumimori
お知らせいただきありがとうございます。