Voorbeeld: subprofiel kopiëren

Het kan handig zijn om bepaalde gegevens zowel in een subprofiel als een profiel op te slaan. Bijvoorbeeld als je een collectie hebt waarin bestellingen worden bewaard, dan is het voor het maken van een selectie of het personaliseren van een mail misschien niet noodzakelijk, maar soms toch wel erg handig als je ook velden hebt als "profile.laatste_besteldatum" of "profile.laatste_bestelbedrag".

Om het profiel en subprofiel 'in sync' te houden kun je een opvolgactie maken met een script: elke keer als een subprofiel wordt aangemaakt of als een subprofiel wordt gewijzigd, dan zorgt dit script dat de gegevens in het profiel worden bijgewerkt met de gegevens van het laatste subprofiel. En andersom kan het natuurlijk ook, als je de gegevens van een profiel naar een subprofiel wilt kopieren draai je de operatie precies om.

Handig om te weten

De volgende variabelen zijn al beschikbaar in het script, omdat ze door de opvolgactie zelf alvast zijn aangemaakt:

  • subprofile: het gewijzigde of aangemaakte subprofiel
  • profile: het profiel dat moet worden bijgewerkt

In het script zoeken we naar het laatste subprofiel. Daarna werken we het profiel bij met de gegevens van dit subprofiel.

Het script

// we gebruiken de collectie met bestellingen
const collection = profile.collections.bestellingen;

// alle subprofielen uit de collectie
const subprofiles = profile.subProfiles(collection);

// zoek het laatste subprofiel (met het hoogste id)
const lastsubprofile = subprofiles.reduce(function(result, current) {
    return result && result.id > current.id ? result : current;
});

// indien er helemaal geen subprofiel is
if (!lastsubprofile) return;

// kopieer wat gegevens van het laatste subprofiel naar het profiel
profile.fields.laatste_besteldatum = lastsubprofile.datum;
profile.fields.laatste_bestelbedrag = lastsubprofile.bedrag;