我有一种方法,可以从组织的组列表中读取并逐一查找每个组的成员资格详细信息。
我收到错误:
<HttpError 403 when requesting https://cloudidentity.googleapis.com/v1/groups/040ew0vw43lra72/memberships?view=FULL&alt=json returned "Error(2028): Permission denied for resource groups/040ew0vw43lra72 (or it may not exist).". Details: "Error(2028): Permission denied for resource groups/040ew0vw43lra72 (or it may not exist).">
几乎可以说这个群组不存在,但是API正在从组织下的群组列表中获取它,我尝试通过ID和关联的电子邮件查找该群组,但该群组不在Google群组用户界面中.
这是我创建的方法,它遍历 group_ids 的数据帧并获取成员资格详细信息:
def get_membership_data(service, all_group_df):
all_member_df = pd.DataFrame()
try:
for inx, group in all_group_df.iterrows():
print(f'Membership details for group {group["name"]}:')
members = (
service.groups()
.memberships()
.list(parent=group["name"], view="FULL")
.execute()
)
if "memberships" in members:
for member in members["memberships"]:
members_df = pd.DataFrame(index=[6])
y = json.dumps(member["preferredMemberKey"])
z = json.loads(y)
members_df.insert(0, "preferredMemberKey", z["id"])
##print(z['id'])
members_df.insert(1, "createTime", member["createTime"])
members_df.insert(2, "updateTime", member["updateTime"])
members_df.insert(3, "name", group["name"])
a = json.dumps(group["groupKey"])
b = json.loads(a)
members_df.insert(4, "groupKey", b["id"])
##print(b['id'])
members_df.insert(5, "displayName", group["displayName"])
all_member_df = pd.concat(
[all_member_df, members_df], ignore_index=True
)
else:
print("No 'memberships' key found in the API response")
except Exception as exc:
print(exc)
return all_member_df
我尝试添加一个 try except 来捕获它到达该组并失败的情况,但是任务仍然失败。我怎样才能更新这个方法,以便当它的迭代不再存在的任何组时,它只是跳过该迭代/不会使 API 崩溃并继续到下一个组。
只需添加继续语句:
try:
members = (
service.groups()
.memberships()
.list(parent=group["name"], view="FULL")
.execute()
)
except Exception as exc:
print(f'Group {group["name"]} No Longer Exists')
continue