Google Admin SDK、具体的には Directory API を使用して、組織内のユーザーのディレクトリ情報を変更しています。Google が提供する Py ライブラリを使用して、Python で簡単なユーティリティ アプリケーションを作成しようとしています。ユーザーの情報の追加と変更は問題なく機能しているようですが、さまざまな情報を削除しようとしているときに問題が発生します。
たとえば、さまざまな属性を持つユーザーに「組織」を追加する必要がある関数は次のとおりです。
def setOrgAttr(userKey, org, attr, value):
global http, directory
user = directory.users().get(userKey=userKey).execute(http=http)
if u'organizations' in user:
for orgIn in user[u'organizations']:
if orgIn[u'name'] == org:
orgIn[attr] = value
else:
user[u'organizations'].append({u'name':org,attr:value})
else:
user[u'organizations'] = [{u'name':org,attr:value}]
directory.users().update(userKey=userKey,body=user).execute(http=http)
これはうまく機能しますが、削除はうまく機能しません。API リファレンス ページhttps://developers.google.com/admin-sdk/directory/v1/reference/#UsersPUT
に表示されているとメソッドの両方を使用してみましたが、どちらも機能していないようです。また、変更された JSON とユーザー オブジェクト全体を送信しようとしましたが、どちらも機能しません。ここに私の削除機能があります:PATCH
def deleteOrg(userKey, org):
global http, directory
user = directory.users().get(userKey=userKey).execute(http=http)
for (i, orgIn) in enumerate(user[u'organizations']):
if orgIn[u'name'] == org:
user[u'organizations'].pop(i)
directory.users().patch(userKey=userKey,body=user).execute(http=http)
最後に、コンテキスト内のすべてをここで確認するには、この時点でアプリ全体を示す Gist を示します。
https://gist.github.com/twhitney11/5f431c958aa822dc5ea5
リクエストをデバッグすると、API に送信する前に JSON オブジェクトから組織を削除していることがわかります。