回應中繼資料

根據預設,PHP 用戶端程式庫會記錄回應中繼資料,包括要求 ID。或者,您也可以在呼叫用戶端服務方法時,將選用參數 withResponseMetadata 設為 true,以程式輔助方式取得回應中繼資料。

呼叫用戶端服務方法後,您可以從相關物件 (例如服務用戶端或串流) 取得 GoogleAdsResponseMetadata 執行個體,具體取決於您呼叫的方法。這個物件提供 getMetadata() 和 getRequestId(),分別會傳回完整的 API 呼叫回應中繼資料陣列和要求 ID。getMetadata() 方法會傳回陣列,結構類似下列輸出內容:

object(Google\Ads\GoogleAds\Lib\V25\GoogleAdsResponseMetadata)#51 (1) {
  ["metadata":"Google\Ads\GoogleAds\Lib\V25\GoogleAdsResponseMetadata":private]=>
  array(17) {
    ["content-disposition"]=>
    array(1) {
      [0]=>
      string(10) "attachment"
    }
    ["request-id"]=>
    array(1) {
      [0]=>
      string(22) "REQUEST_ID"
    }
    ...
  }
}

getRequestId() 方法可簡化從中繼資料陣列擷取要求 ID 的程序,不必手動剖析陣列鍵。

以下各節說明如何為每種方法類型擷取 GoogleAdsResponseMetadata。

SearchStream

如要取得串流呼叫的 GoogleAdsResponseMetadata 物件,請在疊代串流後,對 stream 物件呼叫 getResponseMetadata():

$stream = $googleAdsServiceClient->searchStream(
    SearchGoogleAdsStreamRequest::build($customerId, $query),
    ['withResponseMetadata' => true]
);

foreach ($stream->iterateAllElements() as $googleAdsRow) {
    // Process each row...
}

// Outputs the request ID.
echo $stream->getResponseMetadata()?->getRequestId() . PHP_EOL;

$stream->getResponseMetadata() 會傳回 GoogleAdsResponseMetadata 物件。

搜尋和變動方法

如要取得一元呼叫的 GoogleAdsResponseMetadata 物件,請在服務用戶端物件上呼叫 getResponseMetadata():

// Retrieves objects.
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query),
    ['withResponseMetadata' => true]
);

// Outputs the request ID.
echo $googleAdsServiceClient->getResponseMetadata()?->getRequestId() . PHP_EOL;

// Mutates campaigns.
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build($customerId, $campaignOperations),
    ['withResponseMetadata' => true]
);

// Outputs the request ID.
echo $campaignServiceClient->getResponseMetadata()?->getRequestId() . PHP_EOL;

$campaignServiceClient->getResponseMetadata() 和 $googleAdsServiceClient->getResponseMetadata() 都會傳回 GoogleAdsResponseMetadata 物件。