繁体   English   中英

如何使用谷歌 API 为 python 在特定文件夹下创建工作表?

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

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

from googleapiclient.discovery import build

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

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

问题:

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

示例脚本:

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

模式一:

在这种模式下,新的电子表格会直接创建到您 Google Drive 中的特定文件夹中。 为了创建电子表格,使用了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)

模式二:

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

脚本:
 # 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的 scope 。 添加范围后,请删除创建的包含刷新令牌的凭据文件并重新授权。 这样,额外的范围就会反映到刷新令牌中。
  • 如果您想使用共享云端硬盘,请进行如下修改。
    • 对于模式 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()

参考:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM