使用Python中的Google Drive API定期将文件上传到Google Drive


背景

我想要一个脚本,用于定期使用python将文件上传到google驱动器。
如果您进行搜索,则有很多文章使用PyDrive,但是PyDrive维护得不好,现在使用PyDrive似乎不是一个好主意,因为它使用的是Google Drive API v2。
这次,我将使用GoogleDrive API来实现它。

参考链接

Python快速入门

  • 把握Google Drive API的氛围
  • 在此示例中,您需要登录到控制台一次

    • 对于此规范,我们希望执行常规上传而没有诸如控制台登录之类的用户操作,因此我们需要考虑另一种身份验证。

上传文件数据

  • 文件上传样本

    • Python样本稀缺且外观不正确

使用Lambda(Python)将文件上传到Google云端硬盘

  • 介绍了使用GCP服务帐户的示例
  • qiita的这篇文章最有帮助

实施样本

sample.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from oauth2client.service_account import ServiceAccountCredentials
import os

def uploadFileToGoogleDrive(fileName, localFilePath):
    service = getGoogleService()
    # "parents": ["****"]この部分はGoogle Driveに作成したフォルダのURLの後ろ側の文字列に置き換えてください。
    file_metadata = {"name": fileName, "mimeType": "text/csv", "parents": ["****"] }
    media = MediaFileUpload(localFilePath, mimetype="text/csv", resumable=True)
    file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()

def getGoogleService():
    scope = ['https://www.googleapis.com/auth/drive.file']
    keyFile = 'credentials.json'
    credentials = ServiceAccountCredentials.from_json_keyfile_name(keyFile, scopes=scope)
    return build("drive", "v3", credentials=credentials, cache_discovery=False)


getGoogleService()
uploadFileToGoogleDrive("hoge", "hige.csv")