8000 Improve Data Extension Rows Creation + Get Email Rendered Preview · kogan/FuelSDK-Python-Wrapper@50e0875 · GitHub
[go: up one dir, main page]

Skip to content

Commit 50e0875

Browse files
author
Sebastien.Dangelo
committed
Improve Data Extension Rows Creation + Get Email Rendered Preview
1 parent 3b13f1d commit 50e0875

File tree

4 files changed

+66
-6
lines changed

4 files changed

+66
-6
lines changed

FuelSDKWrapper.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ def run_async_call(self, endpoint, payload):
512512
return False
513513

514514
def create_data_extension_rows(self, data_extension_key, keys_list, values_list):
515-
endpoint = '{}/data/v1/async/dataextensions/key:{}/rows'.format(self.client.base_api_url, data_extension_key)
515+
endpoint = '{}hub/v1/dataevents/key:{}/rowset'.format(self.client.base_api_url, data_extension_key)
516516

517517
if len(keys_list) != len(values_list):
518518
raise self.ETApiError("keys_list and values_list must be the same size.")
@@ -521,9 +521,10 @@ def create_data_extension_rows(self, data_extension_key, keys_list, values_list)
521521
for i, values in enumerate(values_list):
522522
payload.append({"keys": keys_list[i], "values": values})
523523

524-
res = self.run_async_call(endpoint, payload)
524+
token = self.get_client().authToken
525+
res = requests.post(endpoint, json=payload, headers={"Authorization": "Bearer {}".format(token)})
525526

526-
if res: # Success
527+
if res.status_code in range(200, 300): # Success
527528
return len(values_list)
528529
else: # Error: Try inserting row by row
529530
rows_inserted = 0
@@ -536,6 +537,22 @@ def create_data_extension_rows(self, data_extension_key, keys_list, values_list)
536537
rows_inserted += 1
537538
return rows_inserted
538539

540+
def create_data_extension_rows_async(self, data_extension_key, items_list):
541+
endpoint = '{}/data/v1/async/dataextensions/key:{}/rows'.format(self.client.base_api_url, data_extension_key)
542+
543+
payload = {'items': items_list}
544+
res = self.run_async_call(endpoint, payload)
545+
546+
if res: # Success
547+
return len(items_list)
548+
else: # Error: Try inserting row by row
549+
rows_inserted = 0
550+
for property_dict in items_list:
551+
res = self.create_object(ObjectType.DATA_EXTENSION_ROW, property_dict, data_extension_key)
552+
if res.code == 200:
553+
rows_inserted += 1
554+
return rows_inserted
555+
539556
def update_data_extension_rows(self, data_extension_key, rows_list):
540557
endpoint = '{}/data/v1/async/dataextensions/key:{}/rows'.format(self.client.base_api_url, data_extension_key)
541558
payload = {'items': rows_list}
@@ -964,3 +981,24 @@ def get_contacts_counts(self):
964981
url = "https://www.exacttargetapis.com/contacts/v1/addresses/count/"
965982
res = requests.post(url, headers={"Authorization": "Bearer {}".format(token)})
966983
return res.json().get("totalCount", -1)
984+
985+
def get_email_preview(self, email_id, list_id=None, data_extension_key=None, contact_id=None, contact_key=None):
986+
url = "{}guide/v1/emails/{}".format(self.get_client().base_api_url, email_id)
987+
988+
if list_id:
989+
url += "/lists/{}".format(list_id)
990+
elif data_extension_key:
991+
url += "/dataExtension/key:{}".format(data_extension_key)
992+
else:
993+
raise self.ETApiError("list_id or data_extension_key required.")
994+
995+
if contact_id:
996+
url += "/contacts/{}/preview?kind=html,text".format(contact_id)
997+
elif contact_key:
998+
url += "/contacts/key:{}/preview?kind=html,text".format(contact_key)
999+
else:
1000+
raise self.ETApiError("contact_id or contact_key required.")
1001+
1002+
token = self.get_client().authToken
1003+
res = requests.post(url, headers={"Authorization": "Bearer {}".format(token)})
1004+
return res.json()

README.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ fields = sorted(api.get_data_extension_columns("My_DE_Key").results, key=lambda
137137
response = api.clear_data_extension("DE_Key")
138138

139139
# Create Batch of Data Extension Rows
140+
# Synchronous
140141
keys_list = [
141142
["Field1", "Field2", "Field3"], # Fields for Row 1
142143
["Field1", "Field2", "Field3"], # Fields for Row 2
@@ -147,7 +148,15 @@ values_list = [
147148
["Row2_Value1", "Row2_Value2", "Row2_Value3"],
148149
["Row3_Value1", "Row3_Value2", "Row3_Value3"]
149150
]
150-
response = api.create_data_extension_rows("DE_Key", keys_list, values_list)
151+
rows_inserted_count = api.create_data_extension_rows("DE_Key", keys_list, values_list)
152+
153+
# Asynchronous
154+
items_list = [
155+
{"Field1": "Value1", "Field2": "Value2", "Field3": "Value3"}, # Row 1
156+
{"Field1": "Value1", "Field2": "Value2", "Field3": "Value3"}, # Row 2
157+
{"Field1": "Value1", "Field2": "Value2", "Field3": "Value3"} # Row 3
158+
]
159+
rows_inserted_count = api.create_data_extension_rows_async("DE_Key", items_list)
151160

152161
# Retrieve Data Extension Rows via REST API for more advanced parameters
153162
items, items_count = api.get_data_extension_rows_rest(
@@ -169,6 +178,19 @@ items, items_count = api.get_data_extension_rows_rest(
169178
property_list=["email_address", "full_name"],
170179
max_rows=300
171180
)
181+
182+
# Get Email Rendered Preview
183+
res = api.get_objects(
184+
ObjectType.EMAIL,
185+
simple_filter("Name", Operator.EQUALS, "BCLA_202001_06-LIVE"),
186+
property_list=["ID"]
187+
)
188+
email_id = res.results[0].ID
189+
res = api.get_email_preview(
190+
email_id,
191+
data_extension_key="My_DE_Key",
192+
contact_key="My_Contact_Key"
193+
)
172194
```
173195

174196
### Get More Results

__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
__title__ = 'FuelSDKWrapper'
2-
__version__ = '1.1.9'
2+
__version__ = '1.2.0'
33
__author__ = 'Seb Angel'
44
__license__ = 'MIT'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
readme = f.read()
55

66
setup(
7-
version='1.1.9',
7+
version='1.2.0',
88
name='FuelSDKWrapper',
99
description='Simplify and enhance the FuelSDK for Salesforce Marketing Cloud (ExactTarget)',
1010
long_description=readme,

0 commit comments

Comments
 (0)
0