大量程式成員匯入

大量程式成員匯入端點參考

對於大量的程式成員記錄,可以使用大量API非同步匯入程式成員。 這可讓您使用含分隔字元(逗號、定位字元或分號)的平面檔案,將記錄清單匯入Marketo。 檔案可包含任意數量的記錄,只要檔案總計小於10MB即可。 記錄作業僅限「插入或更新」。

處理限制

您可以提交一個以上的大量匯入要求,但會有限制。 每個請求都會當作工作新增至FIFO佇列進行處理。 最多可同時處理兩個工作。 在任何指定時間,佇列中最多允許10個工作(包括目前處理的2個)。 如果超過十個作業的上限,則會傳回「1016,匯入次數過多」錯誤。

匯入檔案

檔案的第一列必須是標題,標題會列出對應的REST API名稱,作為要將每列的值對應到的欄位。 可以使用描述銷售機會和/或描述方案成員端點來擷取REST API名稱。 記錄可包含潛在客戶欄位、自訂潛在客戶欄位和自訂方案成員欄位。

典型的檔案會遵循此基本模式:

email,firstName,lastName
test@example.com,John,Doe

呼叫本身是使用multipart/form-data內容型別所執行。

此請求型別可能很難實作,因此強烈建議您使用現有程式庫實作。

建立工作

匯入程式成員端點會讀取包含程式成員記錄的檔案,並將它們新增至具有指定狀態的程式。 記錄可以同時包含潛在客戶欄位和方案成員自訂欄位。 所有記錄都必須包含電子郵件欄位,用於重複資料刪除目的。

programId路徑引數指定成員加入的程式。

有三個必要的查詢引數。 format引數指定匯入檔案格式(CSV、TSV或SSV),programMemberStatus引數指定正在加入程式的成員的程式狀態,而file引數包含包含包含程式成員記錄的匯入檔案名稱。

POST /bulk/v1/program/{programId}/members/import.json?format=csv&programMemberStatus=On List
Content-Type: multipart/form-data; boundary=--------------------------118046853683028616211319
Content-Length: 772
Host: <munchkinId>.mktorest.com
----------------------------118046853683028616211319
Content-Disposition: form-data; name="file"; filename="Lead-House-Lannister.csv"
Content-Type: text/csv

firstName,lastName,email,title,company,leadScore
Joanna,Lannister,Joanna@Lannister.com,Lannister,House Lannister,0
Tywin,Lannister,Tywin@Lannister.com,Lannister,House Lannister,0
Cersei,Lannister,Cersei@Lannister.com,Lannister,House Lannister,0
Jamie,Lannister,Jamie@Lannister.com,Lannister,House Lannister,0
Tyrion,Lannister,Tyrion@Lannister.com,Lannister,House Lannister,0
Kevan,Lannister,Kevan@Lannister.com,Lannister,House Lannister,0
Dorna,Lannister,Dorna@Lannister.com,Lannister,House Lannister,0
Lancel,Lannister,Lancel@Lannister.com,Lannister,House Lannister,0

----------------------------118046853683028616211319--
{
    "requestId": "17f4a#16f87f87325",
    "result": [
        {
            "batchId": 1040,
            "importId": "1040",
            "status": "Queued"
        }
    ],
    "success": true
}

請注意,在回應我們的呼叫時,結果陣列中的記錄有batchIdstatus欄位。 由於此端點為非同步,因此它可以傳回「已排入佇列」、「匯入」或「失敗」狀態。 您必須保留batchId才能取得匯入工作的狀態,以及在完成時擷取失敗和/或警告。 batchId的有效期限為七天。

使用上面的範例,呼叫端點的簡單方法是從命令列使用cURL:

curl -i -F format='csv' -F programMemberStatus='On List' -F file='@Lead-House-Lannister.csv' -F access_token='<Access Token>' <REST API Endpoint Base URL>/bulk/v1/program/{programId}/members/import.json

其中匯入檔案「Lead-House-Lannister.csv」包含下列內容:

firstName,lastName,email,title,company,leadScore
Joanna,Lannister,Joanna@Lannister.com,Lannister,House Lannister,0
Tywin,Lannister,Tywin@Lannister.com,Lannister,House Lannister,0
Cersei,Lannister,Cersei@Lannister.com,Lannister,House Lannister,0
Jamie,Lannister,Jamie@Lannister.com,Lannister,House Lannister,0
Tyrion,Lannister,Tyrion@Lannister.com,Lannister,House Lannister,0
Kevan,Lannister,Kevan@Lannister.com,Lannister,House Lannister,0
Dorna,Lannister,Dorna@Lannister.com,Lannister,House Lannister,0
Lancel,Lannister,Lancel@Lannister.com,Lannister,House Lannister,0

輪詢工作狀態

建立匯入工作之後,您必須查詢其狀態。 最佳實務是每5到30秒輪詢匯入工作。 若要這麼做,請將batchId路徑引數傳遞至取得匯入程式成員狀態端點。

GET /bulk/v1/program/members/import/{batchId}/status.json
{
    "requestId": "e0cb#16f87f8b177",
    "result": [
        {
            "batchId": 1040,
            "importId": "1040",
            "status": "Complete",
            "numOfLeadsProcessed": 8,
            "numOfRowsFailed": 0,
            "numOfRowsWithWarning": 0,
            "message": "Import succeeded, 8 records imported (8 members)"
        }
    ],
    "success": true
}

此回應會顯示已完成的匯入。 狀態可為下列其中之一:完成、已排入佇列、匯入、失敗。

如果工作已完成,則會列出已處理、失敗或有警告的列數。 如果狀態為「失敗」,則訊息引數也會提供失敗訊息。

失敗

numOfRowsFailed取得匯入程式成員狀態回應中的屬性指出失敗。 如果numOfRowsFailed大於零,則該值表示發生的失敗次數。

使用Get Import Program Member Failures端點傳遞batchId路徑引數,以擷取失敗資料列的記錄和原因。

GET /bulk/v1/program/members/import/{batchId}/failures.json

端點會以檔案回應,指出哪些資料列失敗,同時訊息指出記錄失敗的原因。 檔案的格式與工作建立期間在format引數中指定的格式相同。 附加欄位會附加至每個記錄並附有失敗說明。

例如,假設您匯入下列潛在客戶分數無效的檔案:

firstName,lastName,email,title,company,leadScore
Aerys,Targaryen,Aerys@Targaryen.com,Targaryen,House Targaryen,TEXT_VALUE_IN_INTEGER_FIELD

當您檢查工作狀態時,您會看到numOfRowsFailed為1,表示發生失敗:

GET /bulk/v1/program/members/import/{batchId}/status.json
{
    "requestId": "4c2d#16f8b32c8ef",
    "result": [
        {
            "batchId": 1046,
            "importId": "1046",
            "status": "Complete",
            "numOfLeadsProcessed": 0,
            "numOfRowsFailed": 1,
            "numOfRowsWithWarning": 0,
            "message": "Import completed with errors, 0 records imported (0 members), 1 failed"
        }
    ],
    "success": true
}

然後擷取失敗檔案以取得失敗的其他詳細資訊:

GET /bulk/v1/program/members/import/{batchId}/failures.json
firstName,lastName,email,title,company,leadScore,Import Failure Reason
Aerys,Targaryen,Aerys@Targaryen.com,Targaryen,House Targaryen,TEXT_VALUE_IN_INTEGER_FIELD,Invalid data type in field Lead Score

警告

numOfRowsWithWarning取得匯入程式成員狀態回應中的屬性表示警告。 如果numOfRowsWithWarning大於零,則該值表示發生的警告數。

使用取得匯入程式成員警告端點傳遞batchId路徑引數,以擷取記錄及警告資料列的原因。

GET /bulk/v1/program/members/import/{batchId}/warnings.json

端點會以檔案回應,指出哪些列產生警告,同時也會以訊息指出記錄產生警告的原因。 檔案的格式與工作建立期間在format引數中指定的格式相同。 附加欄位會附加至每個記錄,並附有警告的說明。

例如,假設您匯入下列電子郵件地址無效的檔案:

firstName,lastName,email,title,company,leadScore
Aerys,Targaryen,INVALID_EMAIL,Targaryen,House Targaryen,0

當您檢查工作狀態時,您會看到numOfRowsWithWarning為1,表示發生警告:

GET /bulk/v1/program/members/import/{batchId}/status.json
{
   "requestId":"4ca1#16f883c2003",
   "result":[
      {
         "batchId":1041,
         "importId":"1041",
         "status":"Complete",
         "numOfLeadsProcessed":1,
         "numOfRowsFailed":0,
         "numOfRowsWithWarning":1,
         "message":"Import succeeded, 1 records imported (1 members), 1 warning."
      }
   ],
   "success":true
}

然後,您可以擷取警告檔案,以取得有關警告的其他詳細資訊:

GET /bulk/v1/program/members/import/{batchId}/warnings.json
firstName,lastName,email,title,company,leadScore,Import Warning Reason
Aerys,Targaryen,INVALID_EMAIL,Targaryen,House Targaryen,0,Invalid email address
recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59