Creating Tableau Projects and child projects with Tableau API and Python
Prerequisites:
Python on the machine
tableauserverclient module
API enabled on Tableau server.
Permissions to update for the user
Projects.csv file . list all groups in a csv file. attached format .
Changes to be made in the script for below lines in the script
groups = open('<Filepath>/groups.csv')
pat='getyourpersonaltoken'
server = TSC.Server('http://myserver.tableau.com',use_server_version=True)
tokenName = 'mytokenname'
Script:
import tableauserverclient as TSC
import csv
Projects = open('filepath/projects.csv')
prjt = csv.reader(Projects)
projectstobe = list(prjt)
sourceprojects =[]
createdprjts = []
parentproj_id=''
pr_perm = TSC.ProjectItem.ContentPermissions.ManagedByOwner
pat = 'personalaccesstoken'
server = TSC.Server('http://myserver.tableau.com', use_server_version=True)
tokenName = 'mytokenname'
ta = TSC.PersonalAccessTokenAuth(token_name=tokenName, personal_access_token=pat)
with server.auth.sign_in_with_personal_access_token(ta):
#srcprojects, pagination_item = server.projects.get()
for projects2 in projectstobe:
if projects2[3] == 1:
pr_perm = TSC.ProjectItem.ContentPermissions.LockedToProject
else:
pr_perm = TSC.ProjectItem.ContentPermissions.ManagedByOwner
parentproj=projects2[1]
endpoint = {
'project': server.projects,
}.get('project')
for resource in TSC.Pager(endpoint.get):
if parentproj==resource.name:
parentproj_id=resource.id
#print(projects2[0],parentproj,parentproj_id)
new_project = TSC.ProjectItem(name=projects2[0], content_permissions=pr_perm, description=projects2[2],parent_id=parentproj_id)
new_project = server.projects.create(new_project)
createdprjts.append(projects2[0])
Comments
Post a Comment