最佳做法和限制

使用 BatchJobService

提高處理量

  • 建議減少大型工作,而非多個小型工作。

  • 按照作業類型排序已上傳的作業。舉例來說 當中包含新增廣告活動、廣告群組和廣告群組條件的作業。 排列上載作業中的作業順序,讓所有廣告活動 依序廣告群組作業中,最後 廣告群組條件作業

  • 進行相同類型的操作時,可提高成效並分組 依父項資源排序舉例來說,如果有一系列 AdGroupCriterionOperation 物件,分組時更有效率 而不是把影響廣告的作業 不同的廣告群組條件

避免並行問題

  • 為同一個帳戶提交多項並行工作時,請嘗試減少 同時處理相同物件的機率 和維持大型工作規模許多未完成的工作 (狀態為 RUNNING),則需要 嘗試變更同一組物件,可能導致死結狀況 以致於嚴重拖慢速度,甚至工作失敗

  • 請勿為同一個物件提交多項會修改同一物件的作業 因為結果無法預測。

以最佳方式擷取結果

  • 請勿過於頻繁地輪詢工作狀態,否則可能會達到頻率限制 發生錯誤。

  • 每個頁面最多只能擷取 1,000 筆結果。伺服器會傳回 資源用量或其他因素

  • 結果順序將與上傳順序相同。

其他使用指南

  • 您可以設定批次工作執行時間上限 正在取消中。建立新的批次工作時,請設定 metadata.execution_limit_seconds敬上 欄位設為所需的時間限制 (以秒為單位)。沒有預設時間 如未設定 metadata.execution_limit_seconds,會受到限制。

  • 建議一次最多新增 1,000 項作業 AddBatchJobOperationsRequest敬上 並使用 sequence_token。 將其餘作業上傳至同一項工作。根據用途 作業內容、單一作業過多 AddBatchJobOperationsRequest 可能會造成 REQUEST_TOO_LARGE 錯誤。個人中心 可以減少作業數量並重試 AddBatchJobOperationsRequest

限制

  • 每個 BatchJob 最多可支援 100 萬個 作業。

  • 每個帳戶一次最多可以有 100 個有效或待處理的工作。

  • 系統會自動移除超過 7 天的待處理工作。

  • 每個 AddBatchJobOperationsRequest 大小上限為 10,484,504 個位元組如果超出這個上限,您將會收到 INTERNAL_ERROR。您可以決定要求的大小 如果太大,可以提交並採取適當行動。

    Java

    
    static final int MAX_REQUEST_BYTES = 10_484_504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    Python

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    小茹

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    PHP

    
    use Google\Ads\GoogleAds\V16\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    .NET

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    Perl

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 10484504;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);