如何使用 gspread 库检查工作簿是否存在? 我的问题是,如果我第二次运行 gspread.create(title) 它不会重写前一个文件,而是创建另一个同名文件。知道如何避免吗?
谢谢。 石油
您可以使用 try/except + gc.open():
检查from gspread.exceptions import SpreadsheetNotFound
spreadsheetName = '' # Enter your spreadsheet name
gc = gspread.authorize(credentials)
try:
gc.open(spreadsheetName)
# Code if spreadsheet exists:
print("Spreadsheet exists")
except SpreadsheetNotFound:
# Code if spreadsheet doesn't exist:
print("Spreadsheet doesn't exist")
如果存在电子表格,则 gc.open() 返回值并运行 try 块。
如果电子表格不存在,则 gc.open() 引发错误“SpreadsheetNotFound”并且运行 except 块。
我相信你的目标如下。
在这种情况下,为了使用电子表格名称检查电子表格是否存在,需要使用Drive API。示例脚本如下
请复制粘贴以下脚本。此脚本不包含授权脚本。所以,请添加您的脚本来检索
client = gspread.authorize(credentials)
.
spreadsheetName = "sample Spreadsheet name" # Please set the Spreadsheet name you want to check.
client = gspread.authorize(credentials)
url = "https://www.googleapis.com/drive/v3/files?q=mimeType%3D%27application%2Fvnd.google-apps.spreadsheet%27%20and%20name%3D%27" + spreadsheetName + "%27%20"
res = requests.get(url, headers={"Authorization": "Bearer " + credentials.access_token})
files = res.json().get("files")
spreadsheet = client.open_by_key(files[0]['id']) if files else client.create(spreadsheetName)
# Sample script for testing "spreadsheet".
sheetNameOf1stTab = spreadsheet.sheet1.title
print(sheetNameOf1stTab)
import requests
。 The Drive API中“Files: list”的方法是配合request
库使用的spreadsheetName
的Spreadsheet名称。并且,当Spreadsheet存在时,将现有的Spreadsheet检索为Spreadsheet对象对于 gspread。当电子表格不存在时,将创建新的电子表格并检索为 gspread 创建的电子表格对象。url = "https://www.googleapis.com/drive/v3/files?q=mimeType%3D%27application%2Fvnd.google-apps.spreadsheet%27%20and%20name%3D%27" + spreadsheetName + "%27%20and%20%27" + folderId + "%27%20in%20parents"
。
folderId
.https://www.googleapis.com/auth/drive
或https://www.googleapis.com/auth/drive.readonly
.现阶段可使用
openall
方法,使用电子表格标题检查电子表格是否存在。 openall
返回列表中的电子表格对象。在这种情况下,当未找到电子表格对象时,将返回空列表。我认为这可以用于检查带有标题的现有电子表格。示例脚本如下
import gspread
client = gspread.oauth(###) # Please use your client.
spreadsheetName = "sample Spreadsheet name" # Please set the Spreadsheet name you want to check.
spreadsheet_list = client.openall(spreadsheetName)
spreadsheet = client.create(spreadsheetName) if spreadsheet_list == [] else spreadsheet_list[0]
print(spreadsheet.id) # Here, the Spreadsheet ID of the retrieved Spreadsheet is shown.
spreadsheetName
的电子表格存在时,检索现有电子表格。当spreadsheetName
的电子表格不存在时,创建一个新的电子表格,标题为spreadsheetName
.