如何在 google API for python 的特定文件夹下创建 sheet?

How to create a sheet under a specific folder with google API for python?

我可以使用下面的代码在“我的云端硬盘”的根目录中创建一个 sheet,但是如何在“我的云端硬盘”或“共享”文件夹下创建 sheet驱动”?

from googleapiclient.discovery import build

service = build(‘sheets’, ‘v4’, credentials=creds)
sheet = service.spreadsheets()
body = {}
results = sheet.create(body=body).execute()
pprint(results)
  • 您想在特定文件夹中创建新的电子表格。
  • 您想使用 google-api-python-client 和 python.
  • 来实现此目的

如果我的理解是正确的,这个答案怎么样?

问题:

遗憾的是,在当前阶段,新的电子表格无法直接创建到 Google Drive using Sheets API 的特定文件夹中。在这种情况下,需要使用驱动器 API。

示例脚本:

在你运行脚本之前,请设置文件夹ID。

模式 1:

在此模式中,新的电子表格直接创建到 Google 驱动器中的特定文件夹。为了创建电子表格,使用 application/vnd.google-apps.spreadsheet 的 mimeType。

脚本:
drive = build('drive', 'v3', credentials=creds)
file_metadata = {
    'name': 'sampleName',
    'parents': ['### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)

模式二:

在此模式中,在表格 API 创建新电子表格后,电子表格将移动到 Google 驱动器中的特定文件夹。

脚本:
# Create Spreadsheet to the root folder.
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
body = {}
results = sheet.create(body=body).execute()
pprint(results)

# Move the created Spreadsheet to the specific folder.
drive = build('drive', 'v3', credentials=creds)
folderId = '### folderId ###'
res = drive.files().update(fileId=results['spreadsheetId'], addParents=folderId, removeParents='root').execute()
print(res)

注:

  • 对于两个示例,请添加 https://www.googleapis.com/auth/drive 的范围。添加范围后,请删除创建的包括刷新令牌的凭据文件并再次授权。这样,额外的范围就会反映到刷新令牌中。
  • 如果要使用共享Drive,请修改如下。
    • 对于模式 1
      • file_metadata = {'name': 'sampleName','parents': ['### folderId ###'],'mimeType': 'application/vnd.google-apps.spreadsheet','driveId': "###"}
      • res = drive.files().create(body=file_metadata, supportsAllDrives=True).execute()
    • 对于模式 2
      • res = drive.files().update(fileId=results['spreadsheetId'], body={'driveId': "###"}, addParents=folderId, removeParents='root', supportsAllDrives=True).execute()

参考文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。