python - 我得到第一个用户然后它失败了
问题描述
我正在尝试在我的 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'
解决方案
推荐阅读
- elasticsearch - 如何创建 ElasticSearch 查询来获取此信息?
- java - Apache netbeans IDE 10.0 安装了 JEE 支持,但注释仍为错误
- sql-server - 用户代码未处理 ArgumentException:(System.ArguementException) 发生在 System. 数据.dll
- javascript - 如何在甜蜜警报中将选中的复选框属性更改为真或假
- database - MongoDB在用户家庭地址上嵌入与参考?
- ios - validateNewTexture:89:缓冲区支持纹理的断言 `BytesPerRow 失败
- nginx - Vagrant 上的 Bolt CMS 不解析 PHP
- python - Django/DRF - prefetch_related() 在没有正确匹配外键关系的情况下返回所有对象?
- google-apps-script - 通过 Apps 脚本获得 Google Drive 权限——是否可以阻止编辑器下载或打印工作表?
- spring-cloud-stream - Spring Cloud Stream RabbitMQ 在死信队列上留下消息