Temporäre Ressourcennamen
BatchJobService unterstützt temporäre Ressourcennamen, auf die in nachfolgenden Vorgängen innerhalb desselben Batchjobs verwiesen werden kann, auch über mehrere sequenzielle AddBatchJobOperations-Anfragen hinweg, die mit einem sequence_token hochgeladen wurden. So können Sie eine Kampagne und die zugehörigen Anzeigengruppen, Anzeigen und Kriterien in einem einzigen Batchjob erstellen, bevor serverseitige IDs zugewiesen werden. In den folgenden allgemeinen Regeln und im Beispiel bezieht sich eine einzelne Anfrage auf eine gesamte BatchJob mit allen AddBatchJobOperations-Uploads.
Dazu geben Sie für die neue Ressource resource_name an, um eine negative ID zu verwenden. Angenommen, Sie erstellen eine Kampagne und geben ihren Ressourcennamen als customers/<YOUR_CUSTOMER_ID>/campaigns/-1 an. Wenn Sie die Anzeigengruppe in einem späteren Vorgang erstellen, können Sie darauf mit diesem Ressourcennamen verweisen. Die von Ihnen angegebene -1 wird dann automatisch durch die tatsächliche ID der erstellten Kampagne ersetzt.
Hinweise zur Verwendung temporärer Ressourcennamen:
- Ein temporärer Ressourcenname kann erst verwendet werden, nachdem er in einer Ressource definiert wurde. Im folgenden Beispiel muss der Anzeigengruppenvorgang nach dem Kampagnenvorgang in der Liste der Vorgänge stehen.
- Temporäre Ressourcennamen werden nicht job- oder mutationsübergreifend gespeichert. Wenn Sie auf eine Ressource verweisen möchten, die in einem vorherigen Job oder einer vorherigen Mutationsanfrage erstellt wurde, verwenden Sie den tatsächlichen Ressourcennamen.
- Bei einem einzelnen Job oder einer einzelnen Mutationsanfrage muss für jeden temporären Ressourcennamen eine eindeutige negative Zahl verwendet werden, auch wenn die Namen von verschiedenen Ressourcentypen stammen. Wenn eine temporäre ID in einem einzelnen Job oder einer einzelnen Mutationsanfrage wiederverwendet wird, wird ein Fehler zurückgegeben.
Beispiel
Angenommen, Sie möchten eine Kampagne, eine Anzeigengruppe und eine Anzeige in einer einzigen API-Anfrage hinzufügen. Sie würden eine Struktur für Ihre Anfrage analog zu der folgenden erstellen:
mutate_operations: [
{
campaign_operation: {
create: {
resource_name: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1",
...
}
}
},
{
ad_group_operation: {
create: {
resource_name: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2",
campaign: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1"
...
}
}
},
{
ad_group_ad_operation: {
create: {
ad_group: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2"
...
}
}
},
]
Für die Anzeigengruppe wird eine neue temporäre ID verwendet, da die -1, die wir für die Kampagne verwendet haben, nicht wiederverwendet werden kann. Wir verweisen auch auf diese Anzeigengruppe, wenn wir eine Anzeigengruppenanzeige erstellen. Die Anzeigengruppe selbst verweist auf den Ressourcennamen, den wir für die Kampagne in einem früheren Vorgang in der Anfrage festgelegt haben. resource_name in ad_group_ad_operation ist nicht erforderlich, da kein weiterer Vorgang darauf verweist.
Fehlerbehandlung in Batchjobs
Da Standardvorgänge in einem Batch-Job mit aktivierter Teilfehlerbehandlung ausgeführt werden (außer in atomaren Sub-Batches), schlagen alle abhängigen untergeordneten Vorgänge, die auf diese temporäre ID verweisen, mit NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS fehl, wenn die Validierung einer übergeordneten Ressource mit einer temporären ID fehlschlägt.
Wenn Sie dieselbe negative ID für mehrere create-Vorgänge im selben Batchjob wiederverwenden, wird NewResourceCreationError.DUPLICATE_TEMP_IDS zurückgegeben. Temporäre IDs sind nur beim Erstellen von Ressourcen (create) oder beim Verweisen auf neu erstellte übergeordnete Ressourcen gültig. Wenn Sie beispielsweise eine negative temporäre ID in AdGroupCriterionOperation.remove übergeben, wenn Sie AddBatchJobOperations aufrufen, wird RequestError.RESOURCE_NAME_MALFORMED zurückgegeben.