首页 > 解决方案 > 如何使用 python 脚本在谷歌驱动器中创建和显示文件夹?

问题描述

此代码显示的id是,folder_name但它没有显示folder_name在谷歌驱动器中。我的目的是创建和显示folder_name谷歌驱动器。怎么做?

import httplib2
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

scope = 'https://www.googleapis.com/auth/drive'

credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
http = httplib2.Http()

drive_service = build('drive', 'v3', http=credentials.authorize(http))

def createFolder(name):
    file_metadata = {
        'name': name,
        'mimeType': 'application/vnd.google-apps.folder'
    }
    file = drive_service.files().create(body=file_metadata,
                                        fields='id').execute()
    print('Folder ID: %s' % file.get('id'))

createFolder('folder_name')

标签: pythonpython-3.xgoogle-drive-api

解决方案


在您的脚本中,该文件夹由服务帐户创建。我认为这是您的问题的原因。服务帐户的 Google Drive 与您的 Google Drive 不同。这样,使用浏览器就无法在您的 Google Drive 中看到由服务帐户创建的文件夹。当你想在浏览器上看到服务账户创建的文件夹时,下面的流程怎么样?

  1. 在您帐户的 Google 云端硬盘中创建新文件夹。
    • 请在您的 Google 云端硬盘中创建新文件夹。在这种情况下,您可以使用浏览器创建它。
  2. 与服务帐户的电子邮件共享创建的新文件夹。
    • 这样,服务帐户就可以访问您在 Google Drive 中创建的文件夹。
    • 电子邮件地址可以在文件中确认credentials.json
  3. 使用脚本中的服务帐户为共享文件夹创建一个文件夹。

通过这个流程,我认为您的目标可以实现。为此,请按如下方式修改您的脚本。

从:

file_metadata = {
    'name': name,
    'mimeType': 'application/vnd.google-apps.folder'
}

到:

file_metadata = {
    'name': name,
    'mimeType': 'application/vnd.google-apps.folder',
    'parents': ['### folder ID ###']
}
  • 请替换### folder ID ###为您在 Google Drive 中创建的文件夹 ID。
  • 通过上述修改,脚本创建的文件夹可以使用浏览器在您的 Google Drive 中看到。

参考:


推荐阅读