使用GSuite的API时无法将用户插入特定的OU

时间:2018-03-07 12:03:36

标签: python python-3.x gsuite

可能是一个愚蠢的问题,但是我正用这个问题敲打桌子,似乎无法在任何地方找到同样的问题!

我的任务是整合大量脚本以使用GSuite的API,基本上将我们想要批量处理的所有功能编写成脚本。

我有一个用CSV创建用户,当它创建用户时,它没有将orgUnitPath变量设置为预期的字符串。

我已经确认它知道该变量应该是什么(一个方便的打印调用告诉我它正在运行时)但是它会降落到顶层而不是它应该进入的区域。

代码可以归结为此(我已经省略了get_credentials和其他一些步骤,因为我知道这些正在运行......):

# Dict file so keywords can be used in CSV to call paths
orgunitDict = {'CS': 'Ops/CS', 'SM': 'Ops/SM', 'Accounts': 'Ops/Etc/Accounts'}

# Read CSV as dict
reader = csv.DictReader(inputfile)

# Iterate through rows of CSV creating user according to a combination of CSV data and fixed values (eg address type = work)
for row in reader:
    emailaddress = str(row['givenName']) + '.' + str(row['familyName']) + '@mydomain.co.uk'
    orgunitPath = orgunitDict[row['org']]
    userinfo = {'name': {'givenName': row['givenName'],
    'familyName': row['familyName']}, 'password': row['Password'], 'primaryEmail': emailaddress,
    'changePasswordAtNextLogin': 'TRUE', 'addresses': {'type': 'work', 'streetAddress': row['streetAddress']},
    'orgUnitPath': orgunitPath, 'organizations': {'title': row['Title']}, 'relations': {'type': 'manager', 'value': row['Manager']}
    }

    # Function to actually create the user
    user_request = service.users().insert(body=userinfo)
    user_request.execute()
    print(orgUnitPath)

现在最后一次打印调用显示我,如果'CS'是该行中的值,结果为'Ops / CS',所以变量设置正确,但它没有在目录中设置。

有人能指出我正确的方向吗?

谢谢!

[顺便使用Python 3.6]

1 个答案:

答案 0 :(得分:0)

事实证明,它只是在努力从字典中调用值作为字典中的值(我想使用行中的'org'值作为从dict orgunitDict调用值的键)。

按中间步骤排序,将第一个键指定为变量:     #Dict文件,因此可以在CSV中使用关键字来调用路径     orgunitDict = {'CS':'Ops / CS','SM':'Ops / SM','账户':     '行动/ ETC /帐户'}

# Read CSV as dict
reader = csv.DictReader(inputfile)

# Iterate through rows of CSV creating user according to a 
combination of CSV data and fixed values (eg address type = work)
for row in reader:
    emailaddress = str(row['givenName']) + '.' + 
    str(row['familyName']) + '@mydomain.co.uk'

    orgrow = row['org']
    orgunitPath = orgunitDict[orgrow]
    userinfo = {'name': {'givenName': row['givenName'],
    'familyName': row['familyName']}, 'password': row['Password'], 
    'primaryEmail': emailaddress,
    'changePasswordAtNextLogin': 'TRUE', 'addresses': {'type': 
    'work', 'streetAddress': row['streetAddress']},
    'orgUnitPath': orgunitPath, 'organizations': {'title': 
    row['Title']}, 'relations': {'type': 'manager', 'value': 
    row['Manager']}
    }

    # Function to actually create the user
    user_request = service.users().insert(body=userinfo)
    user_request.execute()
    print(orgUnitPath)
    orgrow = row['org']