首页 > 解决方案 > 我得到第一个用户然后它失败了

问题描述

我正在尝试在我的 API 中使用 BOX 批量上传功能。

这是我到目前为止所能想到的,它似乎看到了用户,但是它并没有运行以为他的整个字典并且它似乎立即失败了,我认为它可能只是在读取同一个用户并且失败了。下面是我的代码:

from boxsdk import OAuth2, Client
import csv
from boxsdk.object.collaboration import CollaborationRole
auth = OAuth2(
    client_id='XXX',
    client_secret='XXX',
    access_token='XXX',
)
client = Client(auth)

user = client.user().get()

enterPriseUserIds = {}

users = client.users(user_type='all')
for user in users:
    enterPriseUserIds.update({user.login:user.id})


def createGroups():
    created = []
    with open("members.csv",'r') as groups:
        reader=csv.reader(groups)
        for each in reader:
            groupName = each[2]
            if groupName in created:
                continue
            created_group = client.create_group(groupName)
            print('Created group with ID {0}'.format(created_group.id))
            subfolder = client.folder('0').create_subfolder(groupName)
            subfolder = client.folder(subfolder.id).create_subfolder(groupName+" Share Documents")
            group = client.group(group_id=created_group.id)
            collaboration = client.folder(folder_id=subfolder.id).collaborate(group, CollaborationRole.EDITOR)
            created.append(groupName)

#code below: user members CSV to search user list and determine if emails are already in use, if listed, do nothing. 
def createUsers():
    newUser = []
    with open("members.csv",'r') as members:
        reader = csv.reader(members)
        for each in reader:
            memName = each[0]
            memGroupName = each[2]
            memEmail = each[1]
            if memName in newUser:
                continue
            new_user = client.create_user(memName, memEmail, memGroupName)      

#below we will define our folders and make sure they and the group exist before moxing to the folder structure creation

def get_groups():
    groupsList = {}
    groups = client.get_groups()
    for group in groups:
        groupsList.update({group.name:group.id})
    return groupsList

def get_folders(fId):
    folderIds = {}
    items = client.folder(folder_id='{0}'.format(fId)).get_items()
    for item in items:
        folderIds.update({item.name:item.id})
    return folderIds


createGroups()



#input("Please Press Enter After you have uploaded the members on BOX through bulk upload")

#run through members.csv and fill user personal documents folder 

with open("members.csv",'r') as members:
    reader = csv.reader(members)
    for each in reader:
        memName = each[0]
        memGroupName = each[2]
        memEmail = each[1]
        folders = get_folders(0)
        for key,val in folders.items():
            if key.find(memGroupName)>-1:
                groupFolderId = val
                break
        folders = get_folders(val)
        match = 0
        for key,val in folders.items():
            if key.find(memName)>-1:
                match = 1
            if match == 1:    break

            print("User Folder Already Created")
            continue
        else:
            subfolder = client.folder('{0}'.format(groupFolderId)).create_subfolder(memName + " Shared Documents")
            userId = enterPriseUserIds[memEmail]
            user = client.user(user_id=userId)
            collaboration = client.folder(folder_id=subfolder.id).collaborate(user, CollaborationRole.EDITOR) 
            print('Created subfolder with ID {0}'.format(subfolder.id))

这是我得到的错误。我觉得我很亲近!

PS C:\Users\Admin\Desktop\pyscript> python C:\Users\Admin\Desktop\pyscript\script.py
Created group with ID 5043593834
User Folder Already Created
Traceback (most recent call last):
  File "C:\Users\Admin\Desktop\pyscript\script.py", line 96, in <module>
    userId = enterPriseUserIds[memEmail]
KeyError: 'testtestfake@lpl.com'
PS C:\Users\Admin\Desktop\pyscript> python C:\Users\Admin\Desktop\pyscript\script.py
Created group with ID 5043372803
User Folder Already Created
Traceback (most recent call last):
  File "C:\Users\Admin\Desktop\pyscript\script.py", line 96, in <module>
    userId = enterPriseUserIds[memEmail]
KeyError: 'twedf34testfake@lpl.com'
PS C:\Users\Admin\Desktop\pyscript> python C:\Users\Admin\Desktop\pyscript\script.py
Created group with ID 5043763761
User Folder Already Created
Traceback (most recent call last):
  File "C:\Users\Admin\Desktop\pyscript\script.py", line 96, in <module>
    userId = enterPriseUserIds[memEmail]
KeyError: 'twedf34testfake@lpl.com'

标签: pythonarraysapicsvdictionary

解决方案


推荐阅读