Komponenty opcjonalne kampanii Performance Max

Cele konwersji

Gdy tworzysz kampanię Performance Max, automatycznie tworzy się seria celów konwersji , które odpowiadają 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, ale 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 przejść przez wszystkie zwrócone cele konwersji i utworzyć operację aktualizacji dla bieżącej kampanii Performance Max, aby dostosować kierowanie do każdego celu. Przykład kodu pokazany w dalszej części tej sekcji ustawia wszystkie cele jako podlegające ustalaniu stawek, ale musisz dostosować tę część logiki, aby odpowiadała Twoim oczekiwaniom dotyczącym kampanii.

Zalecamy skonfigurowanie celów konwersji w osobnej transakcji niż reszta procesu tworzenia kampanii. CampaignConversionGoalOperation wymaga, aby parametr partialFailure w żądaniu miał wartość false. Jeśli chcesz uruchomić ten kod w tej samej transakcji, w której tworzysz kampanię, musisz ustawić, aby wszystkie operacje miały wyłączoną częściową awarię. 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 kampanii 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 na podstawie Twojego przypadku użycia. Następny przykład kodu pokazuje, jak skonfigurować kierowanie na lokalizację geograficzną. Format innych typów kryteriów znajdziesz w CampaignCriterion dokumentacji.

Możesz utworzyć te kryteria wraz z samą kampanią w ramach tego samego wywołania mutateAll. Ten przykład kodu zakłada, że w ten sposób strukturujesz swój 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 dotyczących grupy plików w dokumentacji interfejsu API przed rozpoczęciem. Konfiguruje się je przez połączenie grupy plików z istniejącym AudienceInfo lub SearchThemeInfo kryterium. Jeśli chcesz użyć odbiorców, zamiast pola searchTheme podaj pole audience z nazwą zasobu odbiorców.

operations.push({
  "assetGroupSignalOperation": {
    "create": {
      "assetGroup": assetGroupOperation.assetGroupOperation.create.resourceName,
      "searchTheme": {
        "text": "mars cruise"
      }
    }
  }
});