Wednesday, May 27, 2020

Create Projects using Tableau API and Python

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])





No comments:

Post a Comment