Cele konwersji
Gdy tworzysz kampanię Performance Max, automatycznie tworzona jest seria celów konwersji, które pasują do CustomerConversionGoal
na koncie. Możesz je dostosować do każdej kampanii Performance Max, aktualizując je.
Aby to zrobić, musisz najpierw pobrać identyfikator kampanii Performance Max i listę wszystkich celów konwersji klienta. Oto przykład zmiany celów jednej kampanii. Możesz też skonfigurować kod tak, aby przechodził przez wiele kampanii Performance Max.
// Query for a campaign by name. Update this logic to pull the campaigns you'd
// like to edit
const campaignName = "My PMax campaign";
let campaignId = "";
const search = AdsApp.search(`SELECT campaign.id FROM campaign WHERE campaign.name = "${campaignName}"`);
if (search.hasNext()) {
campaignId = search.next().campaign.id;
console.log(`Updating conversion goals for ${campaignName}: ${campaignId}`);
}
else
{
console.log(`No campaign named "${campaignName}" found`);
// Perform further error handling here
}
// Query for a list of customer conversion goals
const searchResults = AdsApp.search(
`SELECT
customer_conversion_goal.category,
customer_conversion_goal.origin
FROM customer_conversion_goal`
);
Następnie możesz przejrzeć wszystkie otrzymane cele konwersji i utworzyć operację aktualizacji bieżącej kampanii Performance Max, aby dostosować kierowanie do każdego celu. W przykładzie kodu podanym w dalszej części tej sekcji wszystkie cele są ustawione jako podlegające określaniu stawek, ale tę część logiki należy dostosować do tego, co chcesz osiągnąć w kampanii.
Zalecamy skonfigurowanie celów konwersji w osobnej transakcji niż pozostałe etapy tworzenia kampanii.
CampaignConversionGoalOperation
wymaga, aby wartość partialFailure
w przypadku żądania była ustawiona na false
. Jeśli chcesz uruchomić ten kod w tej samej transakcji, w której tworzysz kampanię, musisz wyłączyć częściowe niepowodzenie dla całego zestawu operacji. Ten przykładowy kod pokazuje, jak wykonać tę operację w osobnej transakcji.
operations = [];
while (searchResults.hasNext()) {
const row = searchResults.next();
const conversionGoal = row.customerConversionGoal;
operations.push({
"campaignConversionGoalOperation": {
"update": {
"resourceName": `customers/${customerId}/campaignConversionGoals/${campaignId}~${conversionGoal.category}~${conversionGoal.origin}`,
// Insert your logic here to determine whether you want this particular
// campaign conversion goal to be biddable or not.
// This code will just default everything to being biddable, but that
// is not necessarily best for your use case.
"biddable": true
},
"updateMask": "biddable"
}
});
}
AdsApp.mutateAll(operations, {partialFailure: false});
Kierowanie kampanii
Aby uzyskać pełną listę dozwolonych typów kryteriów kierowania w kampaniach Performance Max, zapoznaj się z przewodnikiem po interfejsie API.
Dodatkowe kryteria nie są wymagane do utworzenia kampanii Performance Max, ale mogą być przydatne do ograniczenia kierowania w zależności od Twojego przypadku użycia. W następnym przykładzie kodu pokazujemy, jak skonfigurować lokalizację docelową. Format innych typów kryteriów znajdziesz w dokumentacji CampaignCriterion
.
Możesz utworzyć te kryteria wraz z samą kampanią w ramach tego samego wywołania funkcji mutateAll
. Ten przykład kodu zakłada, że w taki sposób strukturyzujesz kod.
operations.push({
"campaignCriterionOperation": {
"create": {
"campaign": campaignOperation.campaignOperation.create.resourceName,
"negative": false,
"location": {
// 1023191 represents New York City
"geoTargetConstant": "geoTargetConstants/1023191"
}
}
}
});
Sygnały dotyczące grupy plików
Zanim zaczniesz, zapoznaj się z informacjami o sygnałach grupy komponentów w dokumentacji interfejsu API. Konfiguruje się je przez połączenie grupy plików z istniejącym kryterium AudienceInfo
lub SearchThemeInfo
. Jeśli zamiast tego chcesz użyć listy odbiorców, w polu audience
podaj nazwę zasobu listy odbiorców, a nie wartość w polu searchTheme
.
operations.push({
"assetGroupSignalOperation": {
"create": {
"assetGroup": assetGroupOperation.assetGroupOperation.create.resourceName,
"searchTheme": {
"text": "mars cruise"
}
}
}
});