Komponenty opcjonalne kampanii Performance Max

Cele konwersji

Gdy tworzysz kampanię Performance Max, automatycznie tworzona jest seria celów konwersji, które są zgodne z 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"
      }
    }
  }
});