使用 GSpread 在文件夹中创建电子表格
Creating A Spreadsheet In A Folder With GSpread
我找不到任何关于如何使用 GSpread 在某个 Google 驱动器目录中创建 GSheet 的文档。
我查看了文档并查看了一些后端代码。
我目前正在使用以下代码创建电子表格:
worksheet = sh.add_worksheet(title='Overview', rows='100', cols='9')
我希望能够在 google 驱动器的目录中创建电子表格,例如:
X > Y > 电子表格
如有任何帮助,我们将不胜感激,
干杯。
- 您想为特定文件夹创建新的电子表格。
- 您想使用 Python 实现此目的。
如果我的理解是正确的,这个答案怎么样?
修改点:
- 遗憾的是,Sheets API 无法实现这一点。在这种情况下,需要使用Drive API.
- 在你的脚本中,我认为你使用
gspread.authorize()
就像 gc = gspread.authorize(credentials)
。在此修改中,使用credentials
。
- 您
worksheet = sh.add_worksheet(title='Overview', rows='100', cols='9')
is used for adding a sheet to the existing Spreadsheet. When you create new Spreadsheet using gspread, please use sh = gc.create('A new spreadsheet')
问题中的脚本。
- 在这种情况下,新的电子表格创建到根文件夹。
准备:
在使用以下脚本之前,请在 API 控制台启用驱动器 API,并添加 https://www.googleapis.com/auth/drive
的范围。如果你使用的范围是https://www.googleapis.com/auth/drive.file
,请使用这个,范围不需要修改为https://www.googleapis.com/auth/drive
。
如果您使用的是 OAuth2,请删除包含刷新令牌的文件。然后,请运行脚本重新授权。这样,添加的范围就会反映到访问令牌中。
如果您使用的是服务帐户,则不需要删除文件。
模式 1:
以下示例脚本会在特定文件夹中创建新的电子表格。
示例脚本:
from apiclient import discovery
destFolderId = '###' # Please set the destination folder ID.
title = '###' # Please set the Spreadsheet name.
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
file_metadata = {
'name': title,
'mimeType': 'application/vnd.google-apps.spreadsheet',
'parents': [destFolderId]
}
file = drive_service.files().create(body=file_metadata).execute()
print(file)
模式二:
如果要将现有电子表格移动到特定文件夹,请使用以下脚本。
示例脚本:
from apiclient import discovery
spreadsheetId = '###' # Please set the Spreadsheet ID.
destFolderId = '###' # Please set the destination folder ID.
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
# Retrieve the existing parents to remove
file = drive_service.files().get(fileId=spreadsheetId,
fields='parents').execute()
previous_parents = ",".join(file.get('parents'))
# Move the file to the new folder
file = drive_service.files().update(fileId=spreadsheetId,
addParents=destFolderId,
removeParents=previous_parents,
fields='id, parents').execute()
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
编辑:
当您要共享文件夹时,请使用以下脚本。
示例脚本:
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
folderId = "###" # Please set the folder ID.
permission = {
'type': 'user',
'role': 'writer',
'emailAddress': '###', # Please set the email address of the user that you want to share.
}
res = drive_service.permissions().create(fileId=folderId, body=permission).execute()
print(res)
参考:
我找不到任何关于如何使用 GSpread 在某个 Google 驱动器目录中创建 GSheet 的文档。
我查看了文档并查看了一些后端代码。
我目前正在使用以下代码创建电子表格:
worksheet = sh.add_worksheet(title='Overview', rows='100', cols='9')
我希望能够在 google 驱动器的目录中创建电子表格,例如:
X > Y > 电子表格
如有任何帮助,我们将不胜感激,
干杯。
- 您想为特定文件夹创建新的电子表格。
- 您想使用 Python 实现此目的。
如果我的理解是正确的,这个答案怎么样?
修改点:
- 遗憾的是,Sheets API 无法实现这一点。在这种情况下,需要使用Drive API.
- 在你的脚本中,我认为你使用
gspread.authorize()
就像gc = gspread.authorize(credentials)
。在此修改中,使用credentials
。 - 您
worksheet = sh.add_worksheet(title='Overview', rows='100', cols='9')
is used for adding a sheet to the existing Spreadsheet. When you create new Spreadsheet using gspread, please usesh = gc.create('A new spreadsheet')
问题中的脚本。- 在这种情况下,新的电子表格创建到根文件夹。
准备:
在使用以下脚本之前,请在 API 控制台启用驱动器 API,并添加 https://www.googleapis.com/auth/drive
的范围。如果你使用的范围是https://www.googleapis.com/auth/drive.file
,请使用这个,范围不需要修改为https://www.googleapis.com/auth/drive
。
如果您使用的是 OAuth2,请删除包含刷新令牌的文件。然后,请运行脚本重新授权。这样,添加的范围就会反映到访问令牌中。
如果您使用的是服务帐户,则不需要删除文件。
模式 1:
以下示例脚本会在特定文件夹中创建新的电子表格。
示例脚本:
from apiclient import discovery
destFolderId = '###' # Please set the destination folder ID.
title = '###' # Please set the Spreadsheet name.
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
file_metadata = {
'name': title,
'mimeType': 'application/vnd.google-apps.spreadsheet',
'parents': [destFolderId]
}
file = drive_service.files().create(body=file_metadata).execute()
print(file)
模式二:
如果要将现有电子表格移动到特定文件夹,请使用以下脚本。
示例脚本:
from apiclient import discovery
spreadsheetId = '###' # Please set the Spreadsheet ID.
destFolderId = '###' # Please set the destination folder ID.
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
# Retrieve the existing parents to remove
file = drive_service.files().get(fileId=spreadsheetId,
fields='parents').execute()
previous_parents = ",".join(file.get('parents'))
# Move the file to the new folder
file = drive_service.files().update(fileId=spreadsheetId,
addParents=destFolderId,
removeParents=previous_parents,
fields='id, parents').execute()
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
编辑:
当您要共享文件夹时,请使用以下脚本。
示例脚本:
drive_service = discovery.build('drive', 'v3', credentials=credentials) # Use "credentials" of "gspread.authorize(credentials)".
folderId = "###" # Please set the folder ID.
permission = {
'type': 'user',
'role': 'writer',
'emailAddress': '###', # Please set the email address of the user that you want to share.
}
res = drive_service.permissions().create(fileId=folderId, body=permission).execute()
print(res)