Skip to content

Instantly share code, notes, and snippets.

@zuzannamj
Last active November 24, 2020 18:29
Show Gist options
  • Save zuzannamj/58d9d486dae5dc2e5508cc7502d9cec8 to your computer and use it in GitHub Desktop.
Save zuzannamj/58d9d486dae5dc2e5508cc7502d9cec8 to your computer and use it in GitHub Desktop.
<script runat="server">
Platform.Load("Core","1.1.1");
try{
</script>
%%[
IF RequestParameter("submitted") == "import" THEN
SET @CampaignID = RequestParameter("Campaign")
IF NOT EMPTY(@CampaignID) THEN
SET @Campaign = RetrieveSalesforceObjects("Campaign","Id,Name","Id", "=", @CampaignID)
SET @Row = Row(@Campaign, 1)
SET @CampaignName = Field(@Row, "Name")
SET @DEname = Concat(@CampaignID,"_",@CampaignName)
SET @guid = GUID()
IF NOT EMPTY(@DEname) THEN
/*CREATE THE DATA EXTENSION*/
Set @de = CreateObject("DataExtension")
SetObjectProperty(@de,"Name",@DEname)
SetObjectProperty(@de,"CustomerKey",@guid)
SetObjectProperty(@de,"Description",concat("Data Extension created for Sales Cloud Campaign: ",@CampaignID))
SetObjectProperty(@de,"IsSendable","True")
SetObjectProperty(@de,"IsTestable","False")
Set @deFields = CreateObject("DataExtensionField")
SetObjectProperty(@deFields,"Name","Email")
SetObjectProperty(@deFields,"FieldType","EmailAddress")
SetObjectProperty(@deFields,"IsRequired","true")
SetObjectProperty(@deFields,"MaxLength","254")
AddObjectArrayItem(@de,"Fields",@deFields)
Set @deFields = CreateObject("DataExtensionField")
SetObjectProperty(@deFields,"Name","SubscriberKey")
SetObjectProperty(@deFields,"IsRequired","true")
SetObjectProperty(@deFields,"IsPrimaryKey","true")
SetObjectProperty(@deFields,"FieldType","Text")
SetObjectProperty(@deFields,"MaxLength","18")
AddObjectArrayItem(@de,"Fields",@deFields)
SetObjectProperty(@de,"SendableDataExtensionField",@deFields)
SET @ts_attr = CreateObject("Attribute")
SetObjectProperty(@ts_attr, "Name", "Subscriber Key")
SetObjectProperty(@ts_attr, "Value", "Subscriber Key")
SetObjectProperty(@de,"SendableSubscriberField",@ts_attr)
Set @StatCode = InvokeCreate(@de, @StatMessage, @ErrorCode)
Output(v(@StatMessage))
ENDIF
SET @subscriberRows = RetrieveSalesforceObjects(
"CampaignMember",
"CampaignId,ContactId,Email,HasOptedOutOfEmail,LeadId",
"CampaignId", "=", @CampaignID
)
IF RowCount(@subscriberRows) > 0 THEN
FOR @counter = 1 TO RowCount(@subscriberRows) DO
SET @row = row(@subscriberRows,@counter)
SET @ContactId = field(@row,"ContactId")
SET @LeadId = field(@row,"LeadId")
SET @subscriberkey = Iif(not Empty(@ContactId), @ContactId, @LeadId)
SET @Email = field(@row,"Email")
SET @insert = insertData(@DEname,"SubscriberKey",@subscriberkey,"Email",@Email)
NEXT
ENDIF
Output(Concat("<br><br>",RowCount(@subscriberRows)," records inserted into ",@DEname," data extension."))
ENDIF
ELSEIF RequestParameter("submitted") == true THEN
SET @CampaignID = RequestParameter("CampaignID")
/* fetch Campaign info from Sales Cloud */
SET @subscriberRows = RetrieveSalesforceObjects(
"CampaignMember",
"Id,CampaignId",
"CampaignId", "=", @CampaignID
)
IF RowCount(@subscriberRows) > 0 THEN]%%
%%=v(RowCount(@subscriberRows))=%% subscribers found. Proceed with import?<br><br>
<form action="%%=RequestParameter('PAGEURL')=%%" method="post">
<input name="Campaign" type="hidden" value="%%=v(@CampaignID)=%%">
<input name="submitted" type="hidden" value="import"><br>
<input type="submit" value="Yes"></form><br>
<form action="%%=RequestParameter('PAGEURL')=%%" method="post">
<input type="submit" value="Cancel">
</form>
%%[ELSE]%%
No records found. Please try again.<br><br>
<form action="%%=RequestParameter('PAGEURL')=%%" method="post">
<input type="submit" value="Go back"></form>
%%[ENDIF]%%
%%[ELSE]%%
<h2>Campaign Import</h2>
<form action="%%=RequestParameter('PAGEURL')=%%" method="post">
<label>Campaign ID: </label><input type="text" name="CampaignID" required="yes"><br>
<input name="submitted" type="hidden" value="true"><br>
<input type="submit" value="Submit">
</form>
%%[ENDIF]%%
<script runat="server">
}catch(e){
Write(Stringify(e));
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment