EDIT : Change in the documentation has been made. pylaunch is now called launchpy. You can now install it with pip command, doing :pip install launchpy
In this article, I will look at the different method available from the launchpy module, the ones directly available without any class instantiation.
At the bottom of this page you will find some code examples on how to use these methods-
launchpy Initiator
The first methods that are available from the launchpy module and that you should know are:
createConfigFile
This will create a json file that you will need to file with the different element requested to generate the token (API Key, Secret, Technical Account, Path to your private key).
Once you have set up this configuration, you can actually call the 2nd method.
importConfigFile
This is taking the name of your config file (or path to it) in order to open it and read it.
This will set the variable required to generate the token.
retrieveToken
This method is actually generating a token. It can be used once you have actually set up your config file and import it into your environment.
getCompanyId
This method will return the company ID from your adobe IO connector. Your token are usually generated for only one company and this is returning which company you are allowed to look for.
getProperties
This method takes one argument (the company id) and it will return a list of property that you will be able to feed the Property class.
launchpy creator
launchpy also provide a method to create a property. This method can return an instance of the Property class directly.
createProperty
It returns either the instance of the Property class or the object returned by the API.
It takes several arguments:
- the company id
- a name
- the platform (by default it is web)
- return_class : a Boolean if you want to return an instance of the Property class.
There are certain kwargs that are also allowed (domains, development, or undefined_vars_return_empty)
reference here : https://developer.adobelaunch.com/api/reference/1.0/properties/create/
launchpy Facilitator
The core methods have some facilitators methods that should help you along the way of using this API. Those facilitators are the real bonus of this wrapper and I hope you will understand how to use them.
The Info methods
There are 4 different methods that are actually giving you around the same information about the different component of Launch:
- extensionsInfo
- rulesInfo
- dataElementInfo
- ruleComponentInfo
Those 4 methods are taking their different elements lists, the ones returned by the getRules, getExtensions, etc… methods and they return a dictionary of name and their attributes. You can create a pandas dataframe from that dictionary and that can help you creating a report for your different elements.
The different attributes retrieve by these functions are :
- name
- data of the creation
- date of the update
- id
- delegate descriptor id (except for rules)
- Publish state
- Working state (dirty)
- review status
- revision number
- version
- settings (except for rules)
- id
- extension id (for Extension)
- rule order (for rule component)
CopySettings
This method allows you to copy settings from one element (Data Element, Extension, Rules, Rule Component) and returns the settings required to create the element again.
One of my main use case would be to copy paste element from one property to another. Thanks to that function, the required elements can be easily catch in a loop on all of your elements.
Note : Think that you don’t need to recreate a Core Extension because it created by default.
extractSettings
This function let’s you extract the settings of your elements. It doesn’t work on rules because rules’ settings are actually set in the rule component elements.
So you can actually extract the settings for the Extensions, the data elements and the rule components.
- extractSettings
Extract the settings from your element. For your custom code, it will extract the javaScript.
Arguments:- element : REQUIRED : element from which you would like to extract the setting from.
- save : OPTIONAL : bool, if you want to save the setting in a JS or JSON file, set it to true. (default False)
Note : for the Custom Code of the Core elements (Data Elements, Rule Component Condition, Rule Component Event, Rule Component Action) it will retrieve the code in a JS file.
For all of the other element type, it returns a JSON format of their settings.
extractAttributes
The method Extract attributes will extract the overall attributes of your element (name, enabled or not, created at, published or not, etc…)
This method is quite interesting if you would like to change the one of the setting (it is a dictionary) and re-import it through an update method.
- extractAttributes
Extract the attributes of your element. You can save it in a file as well.
Arguments:- element : REQUIRED : element you want to get the attributes from
- save : OPTIONAL : bool, if you want to save the setting in a JS or JSON file, set it to true. (default False)
duplicateAttributes
This method is copy pasting the setting of one element to another one. You need to provide the elements as a list (for the base element and the target elements), however it can be a list of one element.
It will copy the base element setting and paste it to the target element. It can also do that for other attributes than settings. It is set through a kwargs.
- duplicateAttributes
Take a list of element and copy their settings (default) to another list of element. Returns a new list of the elements attributes.
Arguments:- base_elements : REQUIRED : list of elements you want to copy
- target_elements : REQUIRED : list of elements you want to change
- Possible kwargs :
- key : OPTIONAL : the type of element you want to copy paste (settings, name,enabled ,etc…). default value for the key are “settings”.
- name_filter : OPTIONAL : Filter the elements to copy to only the ones containing the string in the filter.
example : name_filter=’analytics’ will only copy the element that has analytics in their name
Code Example
import launchpy launchpy.createConfigFile() #you fill your config file with your info launchpy.importConfigFile('myconfigfile.json') companyid = launchpy.getCompanyId() properties = launchpy.getProperties(companyid) propertyInstance = launchpy.Property(properties[0]) ## create a property instance from the first property settings ##retrieving rules or extensions or data elements or rules components rules = propertyInstance.getRules() ruleInfo = launchpy.ruleInfo(rules) ##create a dataframe from the info import pandas as pd df_rules = pd.DataFrame(ruleInfo).T ## I prefer reversed ##copySettings for the rules component : ##for the rules, you only need their names rcs = propertyInstance.getRuleComponents() settings_rc = [] for rc in rcs: settings_rc.append(launchpy.copySettings(rc)) ##you'll need to use the translator afterwards if you want to copy it for other properties. ##extract Settings extracts = [launchpy.extractSettings(element,save=True) for element in rcs] ##save = true will save the element settings in a file (JS or JSON)
I hope this post helps you to better understand the launchpy core component methods.
You may be interested in the articles that explains a bit more about the different components of the launchpy module.
Articles | Comments |
Adobe IO : JWT authentication | How to create JWT authentication with OpenSSL and python |
Adobe IO : Launch API : Introduction to launchpy | What you need to know about this module |
Adobe IO : Launch API : Core Component | The methods directly available from this module. |
Adobe IO : Launch API : Property Class | What is the Property class and how to use it to manage your Launch properties |
Adobe IO : Launch API : Library Class | How to manage your publishing process through launchpy, in python |
Adobe IO : Launch API : Translator Class | A Facilitator in launchpy in order to copy paste the element from one property to another. |
Adobe IO : Launch API : Tutorial | Video tutorial on some methods available from the launchpy module. Not everything is covered in the video. |
Hi Julie, maybe you coul clean up you code example a little bit 😉 Lines: 10,23,25,31
Thanks Jonathan! It seems that my WordPress plugin for code wasn’t decoding some characters.
It should be fine now.