我正在使用下面的代码,正在生成fileID,但未上传文件。我尝试调试,但它显示的输出与代码输出相同。我已将服务帐户json文件和test.csv放置在放置python代码的文件夹中。
from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
def uploadGdrive():
SCOPES = ['https://www.googleapis.com/auth/drive.file']
SERVICE_ACCOUNT_FILE = './iron-tea-266706-8a1f9ee69710.json'
folder_id = '15xc7s-dFnpW6pjtjtUH4kT1BnZ46ffFh'
#file_id = '1IcbtXGW1ZMmv64SqqXJZCsFrwMlE3NiQcDZR98XuFX8'
file_location='./test.csv'
creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('drive', 'v3', credentials=creds)
file_metadata = {
'name': 'Master Summary',
'mimeType': 'application/vnd.google-apps.spreadsheet'
}
media = MediaFileUpload(
'{}'.format(file_location),
mimetype='text/csv',
resumable=True)
#This is to update existing file
#file = service.files().update(body=file_metadata,media_body=media,fileId='{}'.format(file_id)).execute()
#print(file.get('id'))
#this is to create new file
file = service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
print('File ID: %s' % file.get('id'))
if __name__ == '__main__':
uploadGdrive()
服务帐户不是您。服务帐户是虚拟用户,它具有自己的驱动器帐户。它上载的文件归它所有。
您的文件可能已上传到服务帐户驱动器帐户。或者“ 15xc7s-dFnpW6pjtjtUH4kT1BnZ46ffFh”假设服务帐户有权访问该目录。您可以通过执行file.list并查看其当前有权访问的文件来查看此信息。
如果创建文件成功,它将返回file.id作为响应的一部分,您也可以检查该文件。
您可以在自己的Google云端硬盘帐户上创建目录,并与服务帐户共享该目录。然后让服务帐户将文件上传到该目录,然后您便可以在自己的帐户中看到它们。上传文件后,您还需要向自己授予权限。查看Permissions.create。
或者,您可以让服务帐户将文件上传到其自己的帐户,然后为您添加权限到文件,以便您能够看到它。查看Permissions.create。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句