AMPscript と SOAP Web サービス API を使用したフォルダーへの新規メールメッセージの挿入

この AMPscript は、メール保存用のフォルダーに配置され、新しいメールメッセージをそのフォルダーに挿入します。この情報を使用して、メールメッセージをさまざまなフォルダーで整理します。メッセージを整理したら、フォルダーにユーザー権限を割り当てて、メッセージを使用する必要があるユーザーにのみアクセスを許可します。

AMPscript と Web サービス API を使用してフォルダーに新規メールメッセージを挿入する方法 

次のサンプル AMPscript を独自の AMPscript のひな型として使用してください。

サンプル AMPscript 

1%%[ if not empty(RequestParameter("nID")) then
2    Set @newsID = RequestParameter("nID")
3    Set @parent = Concat(@newsID,"_Parent")
4    Set @customerKey = Replace(@newsID,"_","")
5    Set @newsIDName = Replace(@newsID,"_"," ")
6    Set @parentCreated = 0
7    Set @parentFolderCustomerKey = Concat(@customerKey,"_Parent")
8    Set @parentFolderName = Replace(Concat(@newsIDName,"_Parent"),"_"," ")
9
10    /* Retrieve NewsletterID Folder */
11    Set @ret1 = CreateObject("RetrieveRequest")
12    SetObjectProperty(@ret1,"ObjectType","DataFolder")
13    AddObjectArrayItem(@ret1,"Properties","ID")
14    AddObjectArrayItem(@ret1,"Properties","Name")
15    AddObjectArrayItem(@ret1,"Properties","ContentType")
16    AddObjectArrayItem(@ret1,"Properties","ObjectID")
17    AddObjectArrayItem(@ret1,"Properties","CustomerKey")
18    Set @filter = CreateObject("SimpleFilterPart")
19    SetObjectProperty(@filter,"Property","CustomerKey")
20    SetObjectProperty(@filter,"SimpleOperator","equals")
21    AddObjectArrayItem(@filter,"Value",@customerKey)
22    SetObjectProperty(@ret1,"Filter",@filter)
23
24     /* Do the retrieve to see if newsletter id folder exists */
25    Set @retReq1 = InvokeRetrieve(@ret1)
26
27    /* Found the folder, so now set the variables */
28    if RowCount(@retReq1) == 1 then
29        Set @row1 = Row(@retReq1,1)
30        Set @newsletterFolderID = Field(@row1,"ID")
31        Set @folderIDs = Concat("||",@newsletterFolderID,",")
32        Set @contentType = Field(@row1,"ContentType")
33        Set @parentCreated = 1
34
35        /* No NewsletterID Found, so now make one */
36    else
37        Set @ret2 = CreateObject("RetrieveRequest")
38        SetObjectProperty(@ret2,"ObjectType","DataFolder")
39        AddObjectArrayItem(@ret2,"Properties","ContentType")
40        AddObjectArrayItem(@ret2,"Properties","ObjectID")
41        AddObjectArrayItem(@ret2,"Properties","ID")
42        AddObjectArrayItem(@ret2,"Properties","Name")
43        Set @filter2 = CreateObject("SimpleFilterPart")
44        SetObjectProperty(@filter2,"Property","Name")
45        SetObjectProperty(@filter2,"SimpleOperator","equals")
46        AddObjectArrayItem(@filter2,"Value","my contents")
47        SetObjectProperty(@ret2,"Filter",@filter2)
48
49        /* Do the retrieve to get the my contents root folder */
50        Set @retReq2 = InvokeRetrieve(@ret2)
51
52        /* We found one row for the root my contents folder */
53            if RowCount(@retReq2) == 1 then
54                Set @row2 = Row(@retReq2,1)
55                Set @myContents = Field(@row2,"ID")
56                Set @contentType = Field(@row2,"ContentType")
57                Set @parentFolder = CreateObject("DataFolder")
58                SetObjectProperty(@parentFolder,"ID",@myContents)
59                Set @folderobject = CreateObject("DataFolder")
60                SetObjectProperty(@folderobject,"ParentFolder",@parentFolder)
61                SetObjectProperty(@folderobject,"CustomerKey",@customerKey)
62                SetObjectProperty(@folderobject,"Name",@newsIDName)
63                SetObjectProperty(@folderobject,"Description",@newsIDName)
64                SetObjectProperty(@folderobject,"ContentType",@contentType)
65                SetObjectProperty(@folderobject,"AllowChildren",1)
66                SetObjectProperty(@folderobject,"IsEditable",1)
67                Set @statusCode1 = InvokeCreate(@folderobject,@statusMsg,@errorCode)
68                /* NewsletterID Parent Create Errored, so Try Update */
69                if @statusCode1 == 'Error' then
70                    Set @statusCode1 = InvokeUpdate(@folderobject,@statusMsg,@errorCode)
71                /* NewsletterID Parent Create Is Good */
72                else     /* Try to retrieve the newly created NewsletterID folder */
73                    Set @ret3 = CreateObject("RetrieveRequest")
74                    SetObjectProperty(@ret3,"ObjectType","DataFolder")
75                    AddObjectArrayItem(@ret3,"Properties","CustomerKey")
76                    AddObjectArrayItem(@ret3,"Properties","ID")
77                    AddObjectArrayItem(@ret3,"Properties","Name")
78                    AddObjectArrayItem(@ret3,"Properties","ContentType")
79                    AddObjectArrayItem(@ret3,"Properties","ObjectID")
80                    Set @filter3 = CreateObject("SimpleFilterPart")
81                    SetObjectProperty(@filter3,"Property","CustomerKey")
82                    SetObjectProperty(@filter3,"SimpleOperator","equals")
83                    AddObjectArrayItem(@filter3,"Value",@customerKey)
84                    SetObjectProperty(@ret3,"Filter",@filter3)
85                    /* Do the retrieve to see if the NewsletterID folder exists */
86                    Set @retReq3 = InvokeRetrieve(@ret3)
87                /* We found a row for the newly create NewsletterID folder */
88                        if RowCount(@retReq3) == 1 then
89                            Set @row3 = Row(@retReq3,1)
90                            Set @newsletterFolderID = Field(@row3,"ID")
91                            Set @folderIDs = Concat("||",@newsletterFolderID,",")
92                            Set @contentType = Field(@row3,"ContentType")
93                            Set @parentCreated = 1
94                        endif
95                endif
96            endif
97    endif
98
99    if @parentCreated == 1 AND not Empty(@newsletterFolderID) then
100    /* Retrieve parent module folder */
101        Set @ret4 = CreateObject("RetrieveRequest")
102        SetObjectProperty(@ret4,"ObjectType","DataFolder")
103        AddObjectArrayItem(@ret4,"Properties","ID")
104        AddObjectArrayItem(@ret4,"Properties","Name")
105        AddObjectArrayItem(@ret4,"Properties","ContentType")
106        AddObjectArrayItem(@ret4,"Properties","ObjectID")
107        AddObjectArrayItem(@ret4,"Properties","CustomerKey")
108        Set @filter4 = CreateObject("SimpleFilterPart")
109        SetObjectProperty(@filter4,"Property","CustomerKey")
110        SetObjectProperty(@filter4,"SimpleOperator","equals")
111        AddObjectArrayItem(@filter4,"Value",@parentFolderCustomerKey)
112        SetObjectProperty(@ret4,"Filter",@filter4)
113        /* Do the retrieve to see if newsletter id folder exists */
114        Set @retReq4 = InvokeRetrieve(@ret4)
115        /* Found a parent module folder for the parent module */
116            if RowCount(@retReq4) == 1 then
117                Set @row4 = Row(@retReq4,1)
118                Set @moduleFolderID = Field(@row4,"ID")
119                Set @folderIDs = Concat(@folderIDs,@moduleFolderID,"|||")
120                Set @contentType = Field(@row4,"ContentType")
121                /* No parent module folder lets make one */
122            else
123                Set @parentFolder = CreateObject("DataFolder")
124                SetObjectProperty(@parentFolder,"ID",@newsletterFolderID)
125                Set @folderobject = CreateObject("DataFolder")
126                SetObjectProperty(@folderobject,"ParentFolder",@parentFolder)
127                SetObjectProperty(@folderobject,"CustomerKey",@parentFolderCustomerKey)
128                SetObjectProperty(@folderobject,"Name",@parentFolderName)
129                SetObjectProperty(@folderobject,"Description",@parentFolderName)
130                SetObjectProperty(@folderobject,"ContentType",@contentType)
131                SetObjectProperty(@folderobject,"AllowChildren",1)
132                SetObjectProperty(@folderobject,"IsEditable",1)
133                Set @statusCode2 = InvokeCreate(@folderobject,@statusMsg,@errorCode)
134                /* NewsletterID Parent Create Errored, so try update */
135                    if @statusCode2 == 'Error' then
136                        Set @statusCode1 = InvokeUpdate(@folderobject,@statusMsg,@errorCode)
137                        /* NewsletterID Parent Create Is Good */
138                    else      /* Retrieve parent module folder */
139                        Set @ret5 = CreateObject("RetrieveRequest")
140                        SetObjectProperty(@ret5,"ObjectType","DataFolder")
141                        AddObjectArrayItem(@ret5,"Properties","ID")
142                        AddObjectArrayItem(@ret5,"Properties","Name")
143                        AddObjectArrayItem(@ret5,"Properties","ContentType")
144                        AddObjectArrayItem(@ret5,"Properties","ObjectID")
145                        AddObjectArrayItem(@ret5,"Properties","CustomerKey")
146                        Set @filter5 = CreateObject("SimpleFilterPart")
147                        SetObjectProperty(@filter5,"Property","CustomerKey")
148                        SetObjectProperty(@filter5,"SimpleOperator","equals")
149                        AddObjectArrayItem(@filter5,"Value",@parentFolderCustomerKey)
150                        SetObjectProperty(@ret5,"Filter",@filter5)
151                        /* Do the retrieve to see if newsletter id folder exists */
152                        Set @retReq5 = InvokeRetrieve(@ret5)
153                        /* We found a parent module folder for the parent module */
154                            if RowCount(@retReq5) == 1 then
155                                Set @row5 = Row(@retReq5,1)
156                                Set @moduleFolderID = Field(@row5,"ID")
157                                Set @folderIDs = Concat(@folderIDs,@moduleFolderID,"|||")
158                            endif
159                    endif
160            endif
161    endif ]%%
162            %%= v(@folderIDs) =%%
163%%[ endif ]%%