如何在 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()
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
我可以使用下面的代码在“我的云端硬盘”的根目录中创建一个 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()
- 对于模式 1
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。