Place a New Email Message Into a Folder using AMPscript and the SOAP Web Service API
This AMPscript locates the folder you want to use for email storage and places the new email message in that folder. Use this information to organize your email messages in different folders. Once you organize those messages, assign user permissions to those folders to allow access to only those users who need to use those messages.
How to Place a New Email Message Into a Folder using AMPscript and the Web Service API
Use this sample AMPscript as a model for your own AMPscript:
Sample AMPscript
%%[ if not empty(RequestParameter("nID")) then
Set @newsID = RequestParameter("nID")
Set @parent = Concat(@newsID,"_Parent")
Set @customerKey = Replace(@newsID,"_","")
Set @newsIDName = Replace(@newsID,"_"," ")
Set @parentCreated = 0
Set @parentFolderCustomerKey = Concat(@customerKey,"_Parent")
Set @parentFolderName = Replace(Concat(@newsIDName,"_Parent"),"_"," ")
/* Retrieve NewsletterID Folder */
Set @ret1 = CreateObject("RetrieveRequest")
SetObjectProperty(@ret1,"ObjectType","DataFolder")
AddObjectArrayItem(@ret1,"Properties","ID")
AddObjectArrayItem(@ret1,"Properties","Name")
AddObjectArrayItem(@ret1,"Properties","ContentType")
AddObjectArrayItem(@ret1,"Properties","ObjectID")
AddObjectArrayItem(@ret1,"Properties","CustomerKey")
Set @filter = CreateObject("SimpleFilterPart")
SetObjectProperty(@filter,"Property","CustomerKey")
SetObjectProperty(@filter,"SimpleOperator","equals")
AddObjectArrayItem(@filter,"Value",@customerKey)
SetObjectProperty(@ret1,"Filter",@filter)
/* Do the retrieve to see if newsletter id folder exists */
Set @retReq1 = InvokeRetrieve(@ret1)
/* Found the folder, so now set the variables */
if RowCount(@retReq1) == 1 then
Set @row1 = Row(@retReq1,1)
Set @newsletterFolderID = Field(@row1,"ID")
Set @folderIDs = Concat("||",@newsletterFolderID,",")
Set @contentType = Field(@row1,"ContentType")
Set @parentCreated = 1
/* No NewsletterID Found, so now make one */
else
Set @ret2 = CreateObject("RetrieveRequest")
SetObjectProperty(@ret2,"ObjectType","DataFolder")
AddObjectArrayItem(@ret2,"Properties","ContentType")
AddObjectArrayItem(@ret2,"Properties","ObjectID")
AddObjectArrayItem(@ret2,"Properties","ID")
AddObjectArrayItem(@ret2,"Properties","Name")
Set @filter2 = CreateObject("SimpleFilterPart")
SetObjectProperty(@filter2,"Property","Name")
SetObjectProperty(@filter2,"SimpleOperator","equals")
AddObjectArrayItem(@filter2,"Value","my contents")
SetObjectProperty(@ret2,"Filter",@filter2)
/* Do the retrieve to get the my contents root folder */
Set @retReq2 = InvokeRetrieve(@ret2)
/* We found one row for the root my contents folder */
if RowCount(@retReq2) == 1 then
Set @row2 = Row(@retReq2,1)
Set @myContents = Field(@row2,"ID")
Set @contentType = Field(@row2,"ContentType")
Set @parentFolder = CreateObject("DataFolder")
SetObjectProperty(@parentFolder,"ID",@myContents)
Set @folderobject = CreateObject("DataFolder")
SetObjectProperty(@folderobject,"ParentFolder",@parentFolder)
SetObjectProperty(@folderobject,"CustomerKey",@customerKey)
SetObjectProperty(@folderobject,"Name",@newsIDName)
SetObjectProperty(@folderobject,"Description",@newsIDName)
SetObjectProperty(@folderobject,"ContentType",@contentType)
SetObjectProperty(@folderobject,"AllowChildren",1)
SetObjectProperty(@folderobject,"IsEditable",1)
Set @statusCode1 = InvokeCreate(@folderobject,@statusMsg,@errorCode)
/* NewsletterID Parent Create Errored, so Try Update */
if @statusCode1 == 'Error' then
Set @statusCode1 = InvokeUpdate(@folderobject,@statusMsg,@errorCode)
/* NewsletterID Parent Create Is Good */
else /* Try to retrieve the newly created NewsletterID folder */
Set @ret3 = CreateObject("RetrieveRequest")
SetObjectProperty(@ret3,"ObjectType","DataFolder")
AddObjectArrayItem(@ret3,"Properties","CustomerKey")
AddObjectArrayItem(@ret3,"Properties","ID")
AddObjectArrayItem(@ret3,"Properties","Name")
AddObjectArrayItem(@ret3,"Properties","ContentType")
AddObjectArrayItem(@ret3,"Properties","ObjectID")
Set @filter3 = CreateObject("SimpleFilterPart")
SetObjectProperty(@filter3,"Property","CustomerKey")
SetObjectProperty(@filter3,"SimpleOperator","equals")
AddObjectArrayItem(@filter3,"Value",@customerKey)
SetObjectProperty(@ret3,"Filter",@filter3)
/* Do the retrieve to see if the NewsletterID folder exists */
Set @retReq3 = InvokeRetrieve(@ret3)
/* We found a row for the newly create NewsletterID folder */
if RowCount(@retReq3) == 1 then
Set @row3 = Row(@retReq3,1)
Set @newsletterFolderID = Field(@row3,"ID")
Set @folderIDs = Concat("||",@newsletterFolderID,",")
Set @contentType = Field(@row3,"ContentType")
Set @parentCreated = 1
endif
endif
endif
endif
if @parentCreated == 1 AND not Empty(@newsletterFolderID) then
/* Retrieve parent module folder */
Set @ret4 = CreateObject("RetrieveRequest")
SetObjectProperty(@ret4,"ObjectType","DataFolder")
AddObjectArrayItem(@ret4,"Properties","ID")
AddObjectArrayItem(@ret4,"Properties","Name")
AddObjectArrayItem(@ret4,"Properties","ContentType")
AddObjectArrayItem(@ret4,"Properties","ObjectID")
AddObjectArrayItem(@ret4,"Properties","CustomerKey")
Set @filter4 = CreateObject("SimpleFilterPart")
SetObjectProperty(@filter4,"Property","CustomerKey")
SetObjectProperty(@filter4,"SimpleOperator","equals")
AddObjectArrayItem(@filter4,"Value",@parentFolderCustomerKey)
SetObjectProperty(@ret4,"Filter",@filter4)
/* Do the retrieve to see if newsletter id folder exists */
Set @retReq4 = InvokeRetrieve(@ret4)
/* Found a parent module folder for the parent module */
if RowCount(@retReq4) == 1 then
Set @row4 = Row(@retReq4,1)
Set @moduleFolderID = Field(@row4,"ID")
Set @folderIDs = Concat(@folderIDs,@moduleFolderID,"|||")
Set @contentType = Field(@row4,"ContentType")
/* No parent module folder lets make one */
else
Set @parentFolder = CreateObject("DataFolder")
SetObjectProperty(@parentFolder,"ID",@newsletterFolderID)
Set @folderobject = CreateObject("DataFolder")
SetObjectProperty(@folderobject,"ParentFolder",@parentFolder)
SetObjectProperty(@folderobject,"CustomerKey",@parentFolderCustomerKey)
SetObjectProperty(@folderobject,"Name",@parentFolderName)
SetObjectProperty(@folderobject,"Description",@parentFolderName)
SetObjectProperty(@folderobject,"ContentType",@contentType)
SetObjectProperty(@folderobject,"AllowChildren",1)
SetObjectProperty(@folderobject,"IsEditable",1)
Set @statusCode2 = InvokeCreate(@folderobject,@statusMsg,@errorCode)
/* NewsletterID Parent Create Errored, so try update */
if @statusCode2 == 'Error' then
Set @statusCode1 = InvokeUpdate(@folderobject,@statusMsg,@errorCode)
/* NewsletterID Parent Create Is Good */
else /* Retrieve parent module folder */
Set @ret5 = CreateObject("RetrieveRequest")
SetObjectProperty(@ret5,"ObjectType","DataFolder")
AddObjectArrayItem(@ret5,"Properties","ID")
AddObjectArrayItem(@ret5,"Properties","Name")
AddObjectArrayItem(@ret5,"Properties","ContentType")
AddObjectArrayItem(@ret5,"Properties","ObjectID")
AddObjectArrayItem(@ret5,"Properties","CustomerKey")
Set @filter5 = CreateObject("SimpleFilterPart")
SetObjectProperty(@filter5,"Property","CustomerKey")
SetObjectProperty(@filter5,"SimpleOperator","equals")
AddObjectArrayItem(@filter5,"Value",@parentFolderCustomerKey)
SetObjectProperty(@ret5,"Filter",@filter5)
/* Do the retrieve to see if newsletter id folder exists */
Set @retReq5 = InvokeRetrieve(@ret5)
/* We found a parent module folder for the parent module */
if RowCount(@retReq5) == 1 then
Set @row5 = Row(@retReq5,1)
Set @moduleFolderID = Field(@row5,"ID")
Set @folderIDs = Concat(@folderIDs,@moduleFolderID,"|||")
endif
endif
endif
endif ]%%
%%= v(@folderIDs) =%%
%%[ endif ]%%