abowden1
abowden1

Reputation: 63

Python - Upload file to Google Team Drive

I'm trying to upload a file to a specific Team Drive via the Python API, but am struggling with where to specify the teamDriveId. I'm working with Drive v3.

Here is the function I am working with:

def upload_file(self):
    # self.service: Google Drive Hook - works well for other functions
    # self.drive_id: Id of Team Drive I am trying to upload to

    metadata = {'name': 'sample.txt'}
    media = MediaFileUpload('sample.txt', mimetype = 'text/plain')
    upload = self.service.files().create(body=metadata, 
                                         supportsTeamDrives=True,
                                         media_body=media,
                                         fields='id).execute()

I have attempted to put this in both the create() function and the metadata JSON as {'parents': self.drive_id} but this either return an Unexpected keyword argument: teamDriveId or the file will just upload to my personal drive.

I do not have any folders inside the Team Drive I am attempting to work with. I looks like I could set {parents': <teamDrive_folderId>} but I am hoping to find a solution where I don't have to specify a folder and can just put files in the root of the Team Drive.

Any suggestions would be greatly appreciated.

Upvotes: 2

Views: 1863

Answers (1)

dorian
dorian

Reputation: 6292

Setting parents to the Team Drive's ID works for me and inserts the file into the root of the Team Drive. Minimal example:

# media is a `MediaFileUpload` instance
service.files().create(
    supportsTeamDrives=True,
    media_body=media,
    body={
        'parents': ['0AILoX...'],  # ID of the Team Drive
        'name': 'foo.txt'
    }
).execute()

Are you sure that you got the right ID?

Upvotes: 6

Related Questions