Teilweise fehlgeschlagene Vorgänge

Bei einigen AdWords-Diensten können Sie festlegen, dass gültige Vorgänge ausgeführt und für fehlgeschlagene Vorgänge Fehler zurückgegeben werden. Dank dieser Funktion können Sie die fehlgeschlagenen Vorgänge zum Schluss separat behandeln.

Technische Details

Um diese Funktion zu nutzen, müssen Sie diesen optionalen SOAP-Header angeben:

<partialFailure>true</partialFailure>

Der Dienst führt nun die Vorgänge aus, die fehlerfrei sind. Für erfolgreiche Vorgänge werden Ergebnisse zurückgegeben, für fehlgeschlagene Vorgänge werden Fehler zurückgegeben. Dieser Header wird für Nicht-Mutate-Vorgänge ignoriert.

Die Funktion wird von den folgenden Diensten unterstützt:

Verwendung

Ein Beispiel: Sie müssen Ihrem Konto mehrere Keywords hinzufügen. Einige dieser Keywords verstoßen jedoch möglicherweise gegen redaktionelle Richtlinien. Sie möchten die gültigen Keywords senden, doch sollen die fehlgeschlagenen Keywords zusammen mit den entsprechenden Fehlern zurückgegeben werden.

Dienst erstellen

Aktivieren Sie zuerst den partialFailure-Modus:

// Enable partial failure.
session.setPartialFailure(true);

Vorgänge erstellen und API aufrufen

Erstellen Sie die mutate-Vorgänge und rufen Sie die API wie gewohnt auf.

List<AdGroupCriterionOperation> operations = new ArrayList<AdGroupCriterionOperation>();

// Create keywords.
String[] keywords =
    new String[] {"mars cruise", "inv@lid cruise", "venus cruise", "b(a)d keyword cruise"};
for (String keywordText : keywords) {
  // Create keyword
  Keyword keyword = new Keyword();
  keyword.setText(keywordText);
  keyword.setMatchType(KeywordMatchType.BROAD);

  // Create biddable ad group criterion.
  BiddableAdGroupCriterion keywordBiddableAdGroupCriterion = new BiddableAdGroupCriterion();
  keywordBiddableAdGroupCriterion.setAdGroupId(adGroupId);
  keywordBiddableAdGroupCriterion.setCriterion(keyword);

  // Create operation.
  AdGroupCriterionOperation keywordAdGroupCriterionOperation =
      new AdGroupCriterionOperation();
  keywordAdGroupCriterionOperation.setOperand(keywordBiddableAdGroupCriterion);
  keywordAdGroupCriterionOperation.setOperator(Operator.ADD);
  operations.add(keywordAdGroupCriterionOperation);
}

// Add ad group criteria.
AdGroupCriterionReturnValue result =
    adGroupCriterionService.mutate(operations.toArray(new AdGroupCriterionOperation[] {}));

Erfolgreiche Vorgänge behandeln

Für erfolgreiche Vorgänge werden vom Dienst Ergebniswerte zurückgegeben. Sie können sie gegebenenfalls ausdrucken:

for (AdGroupCriterion adGroupCriterionResult : result.getValue()) {
  if (adGroupCriterionResult.getCriterion() != null) {
    System.out.printf("Ad group criterion with ad group ID %d, and criterion ID %d, "
        + "and keyword '%s' was added.%n", adGroupCriterionResult.getAdGroupId(),
        adGroupCriterionResult.getCriterion().getId(),
        ((Keyword) adGroupCriterionResult.getCriterion()).getText());
  }
}

Fehlgeschlagene Vorgänge behandeln

Für fehlgeschlagene Vorgänge werden Fehlerinformationen im Feld partialFailureErrors zurückgegeben. Sie finden den Index des fehlgeschlagenen Vorgangs in der ab Version 201702 verfügbaren Property fieldPathElements oder in der für alle Versionen verfügbaren Property fieldPath des ApiError-Objekts in der Liste partialFailures.

for (ApiError apiError : result.getPartialFailureErrors()) {
  // Get the index of the failed operation from the error's field path elements.
  FieldPathElement[] fieldPathElements = apiError.getFieldPathElements();
  FieldPathElement firstFieldPathElement = null;
  if (fieldPathElements != null && fieldPathElements.length > 0) {
    firstFieldPathElement = fieldPathElements[0];
  }
  if (firstFieldPathElement != null
      && "operations".equals(firstFieldPathElement.getField())
      && firstFieldPathElement.getIndex() != null) {
    int operationIndex = firstFieldPathElement.getIndex();
    AdGroupCriterion adGroupCriterion = operations.get(operationIndex).getOperand();
    System.out.printf(
        "Ad group criterion with ad group ID %d and keyword '%s' "
            + "triggered a failure for the following reason: %s.%n",
        adGroupCriterion.getAdGroupId(),
        ((Keyword) adGroupCriterion.getCriterion()).getText(),
        apiError.getErrorString());
  } else {
    System.out.printf(
        "A failure has occurred for the following reason: %s%n", apiError.getErrorString());
  }
}

Codebeispiele in anderen Programmiersprachen

Im Ordner ErrorHandling jeder Clientbibliothek gibt es ein Codebeispiel, das zeigt, wie diese Funktion verwendet wird.

Feedback geben zu...