次の方法で共有


SharePoint GetMigrationJobProgress API

インポート ジョブでも非同期メタデータ読み取り (AMR) ジョブでも、移行ジョブを送信した後は、GetMigrationJobProgress API を使用してその進行状況を追跡できます。 API は、SDK インターフェイスと REST インターフェイスの両方を介して使用できます。

JobQueued、JobStart、JobProgress、JobError、JobEnd など、一連のジョブ状態イベントが返されます。

アクセス許可

移行ジョブを送信するときは、アプリケーション ベースの認証を使用します。 アプリケーションに Sites.Read.All 権限以上が付与されていることを確認します。

GetMigrationJobProgress メソッド (SDK)

構文

public ClientResult Site.GetMigrationJobProgress(
  Guid jobId, 
  String nextToken
)

メソッド パラメータ

名前 必須 説明
jobId Guid はい 移行ジョブの一意識別子
nextToken 文字列 はい ページング位置のトークン。 最初の要求に "0" を使用する

完了したジョブの場合、nextToken を使用する要求はべき等です。同じ要求を繰り返すと、同じ結果が一貫して返されます。

戻り値

名前 説明
ログ IList 新しい進行状況が使用可能な場合はジョブ状態イベントのコレクション、更新プログラムがない場合は空のコレクションを返します。
NextToken 文字列 新しい進行状況が使用可能な場合は更新された文字列値を返し、更新がない場合は nextToken パラメーターと同じ値を返します。

メソッドの使用例

ClientResult result = context.Site.GetMigrationJobProgress(jobId, nextToken ?? "0");
context.ExecuteQuery();
IList logs = result.Value.Logs;
string newNextToken = result.Value.NextToken;

GetMigrationJobProgress REST API

HTTP 要求

GET https://{site_url}/_api/site/GetMigrationJobProgress(jobId='{jobId}',nextToken=0)

URI パラメーター

名前 必須 説明
jobId Guid はい 移行ジョブの一意識別子
nextToken 文字列 はい ページング位置のトークン。 最初の要求に "0" を使用する

要求ヘッダー

ヘッダー 必須
承認: ベアラー {token} はい
Accept: application/json;odata=verbose はい

応答

HTTP 状態コードが 200 の場合の JSON オブジェクト。

HTTP 状態コードが 200 以外の場合は空の JSON オブジェクト。

エラー処理

状態コード 意味 アクション
403 権限がありません (Unauthorized) アプリ/ユーザーが Sites.Read.All 以上のアクセス許可を持っていることを確認します。
429 要求数が多すぎます (Too Many Requests) ヘッダー Retry-After 解析し、指定した遅延後に再試行します。
500 内部サーバー エラー (Internal Server Error) エラー応答を解析して内部エラーを特定します。 再試行しないでください。
503 サービスは利用できません ヘッダー Retry-After 解析し、指定した遅延後に再試行します。
内部エラー コード 意味
-2147213145 ジョブが見つかりません
-2147213146 ジョブの状態の有効期限が切れています (有効な期間は 5 日未満)

API の使用例

要求サンプル

GET https://contoso.sharepoint.com/_api/site/GetMigrationJobProgress(jobId=' 3e280efa-78a3-4ba1-bac6-e447aa538ca5', nextToken=0)

成功応答のサンプル

状態コード: 200 応答本文:

{
  "d": {
    "GetMigrationJobProgress": {
      "Logs": {
        "__metadata": {
          "type": "Collection(Edm.String)"
        },
        "results": [
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"SiteId\":\"48f1898f-77d9-4a1b-bddc-1f49bb6dc134\",\"DbId\":\"de6b85cd-726e-4b13-ae04-629798fddbf3\",\"TotalRetryCount\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:18:48.132\",\"CorrelationId\":\"91884a0c-5ee8-4e1f-a23f-e4f7ec170182\",\"Event\":\"JobQueued\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"SiteId\":\"48f1898f-77d9-4a1b-bddc-1f49bb6dc134\",\"WebId\":\"7206fc09-e4af-48b3-8730-ed7321396d7a\",\"DbId\":\"de6b85cd-726e-4b13-ae04-629798fddbf3\",\"FarmId\":\"f77d7b6c-ef43-4609-8fce-0e93142ce8a0\",\"ServerId\":\"44af885c-393b-4236-9417-bae7a9edc44e\",\"SubscriptionId\":\"82abb045-250e-4186-ba83-b9295930f272\",\"TotalRetryCount\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:51.129\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobStart\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"TotalRetryCount\":\"0\",\"ObjectType\":\"ListItem\",\"Url\":\"\",\"Id\":\"cb471d5f-593f-4a63-b59e-8eae3e35b08a\",\"SourceListItemIntId\":\"3\",\"TargetListItemIntId\":\"3\",\"ErrorCode\":\"-2147286782\",\"ErrorType\":\"Microsoft.SharePoint.SPException\",\"Message\":\"Attempted to use an object that has ceased to exist. (Exception from HRESULT: 0x80030102 (STG_E_REVERTED)) \",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:55.490\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobError\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"TotalRetryCount\":\"0\",\"FilesCreated\":\"0\",\"BytesProcessed\":\"0\",\"ObjectsProcessed\":\"4\",\"TotalExpectedSPObjects\":\"15\",\"TotalErrors\":\"3\",\"TotalWarnings\":\"0\",\"WaitTimeOnSqlThrottlingMilliseconds\":\"0\",\"TotalDurationInMs\":\"0\",\"CpuDurationInMs\":\"0\",\"SqlDurationInMs\":\"0\",\"SqlQueryCount\":\"0\",\"IsShallowCopy\":\"False\",\"CreatedOrUpdatedFileStatsBySize\":\"{}\",\"ObjectsStatsByType\":\"{\\\"SPUser\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":124,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPFolder\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":153,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPDocumentLibrary\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":404,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPFile\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":0,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPListItem\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":1880,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0}}\",\"TotalExpectedBytes\":\"0\",\"FilesCreatedIrrespectiveOfVersions\":\"0\",\"BytesProcessedOnlyCurrentVersion\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:57.380\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobEnd\"}"
        ]
      },
      "NextToken": "1764",
      "__metadata": {
        "type": "SP.MigrationJobProgress"
      }
    }
  }
}

エラー応答のサンプル

状態コード: 500 応答本文:

{
  "error": {
    "code": "-2147213145, Microsoft.SharePoint.SPException",
    "innererror": {
      "message": "Job not found",
      "stacktrace": "STACK_TRACE"
    },
    "message": {
      "lang": "en-US",
      "value": "Job not found"
    }
  }
} 

ベスト プラクティス

nextToken=0から開始し、返されたトークンを格納し、一定の間隔でポーリングします。 この方法は、実行時間の長いジョブに適しており、更新が見逃されないようにするのに役立ちます。

移行ジョブは通常数分以上かかるため、調整を回避するための ガイドライン に従いながら、1 分ごとにポーリングすることをお勧めします。

関連項目