如何使用Google API for python在特定文件夹下创建工作表?

问题描述 投票:0回答:1

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

from googleapiclient.discovery import build

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

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

问题:

[很遗憾,在当前阶段,不能使用Sheets API将新的电子表格直接创建到Google云端硬盘的特定文件夹中。在这种情况下,必须使用Drive 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)

模式2:

在这种模式下,通过Sheets 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。添加范围后,请删除创建的凭证文件(包括刷新令牌),然后再次授权。这样,其他作用域将反映到刷新令牌。
  • 如果要使用共享驱动器,请进行以下修改。
    • 对于模式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()

参考文献:

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

© www.soinside.com 2019 - 2024. All rights reserved.