2

誰かが助けてくれることを願っています。PyDrive を使用してファイルを認証し、問題なく Google ドライブにアップロードしています。次に、メタデータを更新して共有を許可するように、同じファイルのアクセス許可を変更しようとします。

drive = GoogleDrive(gauth)

file1 = drive.CreateFile({'title': fName, 'shareable':True, 
        'userPermission': [{'kind':'drive#permission', 'type': 'anyone',
        'value': 'anyone','role': 'reader'}]})
file1.SetContentFile(fName)

ただし、userPermission を pprint すると、意図したとおりにアクセス許可が設定されていないようです。

userPermission = file1['userPermission']
pprint.pprint(userPermission)

私は得る:

{u'etag': u'"pvTNHKA6KkAgXTpZXMwU4Pa7ELo/gZDvZYCYVjI-u0hbut2HQwdCArU"',
 u'id': u'me',
 u'kind': u'drive#permission',
 u'role': u'owner',
 u'selfLink': u'https://www.googleapis.com/drive/v2/files/0B1aI5mMxQzh3MktDMWl1ZFdOZw0/permissions/me',
 u'type': u'user'
}

権限が適切に設定されている理由がわかりません。いかなる種類のエラーも発生していません。userPermission 内で変数を設定する方法に問題はありますか? 助けてくれてありがとう。

4

1 に答える 1

1

ファイルの作成中にアクセス許可を設定できるかどうかわかりません。また、まったく変更できるかどうかもわかりませんuserPermission。しかし、できることはpermissionsリストを で変更することですInsertPermission

以下に、共有権限を追加する方法の例を示します。以下のコードは一目瞭然だと思います。

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

def get_drive_handle():
    gauth = GoogleAuth()
    gauth.LocalWebserverAuth()
    drive = GoogleDrive(gauth)
    return drive

def main():
    drive = get_drive_handle()

    # create an example file
    file = drive.CreateFile({
        'title':    'example.txt'
       ,'mimeType': 'text/plain'
    })
    file.Upload()

    # original permissions
    file.FetchMetadata(fields='permissions')
    print('-' * 10);
    print(file['permissions'])

    # insert new permission
    permission = file.InsertPermission({
        'type':  'anyone'
       ,'value': 'anyone'
       ,'role':  'reader'
    })

    # new permission created above
    print('-' * 10);
    print(permission)

    # all permissions
    file.FetchMetadata(fields='permissions')
    print('-' * 10);
    print(file['permissions'])    

if __name__ == '__main__':
    main()

$ python -V
Python 3.4.3
$ python so.py
----------
[{'photoLink': 'https://lh4.googleusercontent.com/-KhPJ2d6XQY4/AAAAAAAAAAI/AAAAAAAAAAA/JCJdY_mh4PA/s64/photo.jpg', 'role': 'owner', 'domain': 'stackoverflow.com', 'kind': 'drive#permission', 'emailAddress': 'user272735@stackoverflow.com', 'name': 'user272735', 'type': 'user', 'etag': '"_x2BG98d9xdLfiLb2EI-wbdIricX8/9AA4fWf3tZymo0DbdDmcl8WsxSY"', 'id': '1720734118151459308', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/1720734118151459308'}]
----------
{'withLink': False, 'type': 'anyone', 'role': 'reader', 'kind': 'drive#permission', 'etag': '"_x2BEY9xkGriLb2EI-wbdIricX8/HCM4BvjWTJ3XhPBw3h0wgA7Cruo"', 'id': 'anyone', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/anyone'}
----------
[{'photoLink': 'https://lh4.googleusercontent.com/-KhPJ2d6XQY4/AAAAAAAAAAI/AAAAAAAAAAA/JCJdY_mh4PA/s64/photo.jpg', 'role': 'owner', 'domain': 'stackoverflow.com', 'kind': 'drive#permission', 'emailAddress': 'user272735@stackoverflow.com', 'name': 'user272735', 'type': 'user', 'etag': '"_x2BG98d9xdLfiLb2EI-wbdIricX8/9AA4fWf3tZymo0DbdDmcl8WsxSY"', 'id': '1720734118151459308', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/1720734118151459308'},
 {'withLink': False, 'type': 'anyone', 'role': 'reader', 'kind': 'drive#permission', 'etag': '"_x2BEY9xkGriLb2EI-wbdIricX8/HCM4BvjWTJ3XhPBw3h0wgA7Cruo"', 'id': 'anyone', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/anyone'}]
于 2016-12-04T11:59:02.500 に答える