Using Google Drive API, I am trying to upload files to Google Drive.
Please see code below. The code runs successfully but instead of uploading all files to one folder, it is creating separate folder to each file it uploads.
I believe I am going wrong with this line in the code: q="name='" + folder + "' and trashed=false and mimeType = 'application/vnd.google-apps.folder' and '{0}' in parents".format(parent_folder_id) but couldnt figure out. Any help is highly appreciated.
def uploadFile(service,pathname, mimetype, folder_id,replace):
# Check if the file exists on google drive
filename=os.path.split(pathname)[1]
page_token = None
q="name='" + filename + "' and trashed=false and '{0}' in parents".format(folder_id)
try:
response = service.files().list(q= q, spaces='drive',
fields="files(name, id)",
pageToken=page_token).execute()
if replace==True:
file_id=response.get('files')[1]['id']
file = service.files().get(fileId=file_id).execute()
# File's new content.
media_body = MediaFileUpload(pathname, resumable=True)
# Send the request to the API.
updated_file = service.files().update(
fileId=file_id,
body=file,
newRevision=False,
media_body=media_body).execute()
except:
file_metadata = {'name': filename, "parents": [folder_id]}
media = MediaFileUpload(pathname,
mimetype=mimetype)
file = service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
#################################
def UploadFiles(inifile, filespec, parent_folder):
page_token = None
# Retrieve the parent folder id from the parent folder name
q="name='" + parent_folder + "' and trashed=false and mimeType = 'application/vnd.google-apps.folder'"
try:
response = service.files().list(q=q, spaces='drive',fields="files(name,id)",pageToken=page_token).execute()
except:
print("Parent folder",parent_folder,"was not found")
return
parent_folder_id = response.get('files')[0]['id']
##For loop to go through each file in filelist to upload
for pathname in glob.glob(filespec):
#for files in file_list:
folder=pathname.split('_')[1]
# Check if the folder exists
q="name='" + folder + "' and trashed=false and mimeType = 'application/vnd.google-apps.folder' and '{0}' in parents".format(parent_folder_id)
try:
response = service.files().list(q=q, spaces='drive',fields="files(name,id,parent_id)").execute()
folder_id = response.get('files')[0]['id']
except:
#if folder doesnt exist, create and upload
file_metadata = {'name': folder,'mimeType':'application/vnd.google-apps.folder','parents':[parent_folder_id]}
#createFolder(folder)
new_folder = service.files().create(body=file_metadata, fields='id').execute()
folder_id = new_folder.get('id')
# Now upload the file!
if pathname.endswith("pdf"):
mimetype = 'application/pdf'
else:
mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
#print("uploading file ",files," path",filepath," filename",filename, " folderid", folderid)
uploadFile(service,pathname,mimetype,folder_id,True)