gpt4 book ai didi

python - Google 表格使用名称查找以前创建的工作表

转载 作者:行者123 更新时间:2023-12-01 07:28:16 25 4
gpt4 key购买 nike

我的用例是使用脚本在我的谷歌驱动器上创建/更新工作表并让它每天运行,以便数据正确。

我的代码正确创建了工作表,但是当我每天运行时,它会创建一个具有相同名称的不同工作表。我想添加一个尝试,除了看看该表是否是以前的,如果是,则覆盖即可。

我花了几个小时试图找到有人这样做的例子。我希望返回sheetid,无论它是新创建的还是以前创建的。

def create_spreadsheet(sp_name, creds):
proxy = None

#Connect to sheet API
sheets_service = build('sheets', 'v4', http=creds.authorize(httplib2.Http(proxy_info = proxy)))

#create spreadsheet with title 'sp_title'
sp_title = sp_name

spreadsheet_req_body = {
'properties': {
'title': sp_title
}
}
spreadsheet = sheets_service.spreadsheets().create(body=spreadsheet_req_body,
fields='spreadsheetId').execute()
return spreadsheet.get('spreadsheetId')

最佳答案

  • 您想要检查具有特定文件名的文件(电子表格)是否存在于您的 Google 云端硬盘中。
  • 如果该文件已存在,您希望返回该文件的文件 ID。
  • 如果文件不存在,您希望通过创建新电子表格返回文件 ID。
  • 您希望使用 Python 的 google-api-python-client 实现上述目标。

如果我的理解是正确的,那么这个修改怎么样?有一种方法可以使用 Drive API 来确认具有特定文件名的文件是否存在。在本次修改中,使用了Files:list Drive API的方法。请将此视为多个答案之一。

修改点:

  • 在本次修改中,使用了Files: list Drive API的方法。使用搜索查询检查该文件。
    • 在本例中,系统会根据文件名和 mimeType 搜索文件并将其从垃圾箱中删除。
    • 当文件存在时,返回文件ID。
    • 如果文件不存在,则会创建新的电子表格并通过脚本返回文件 ID。

修改后的脚本:

请按如下方式修改您的脚本。

def create_spreadsheet(sp_name, creds):
proxy = None
sp_title = sp_name

# --- I added blow script.
drive_service = build('drive', 'v3', http=creds.authorize(httplib2.Http(proxy_info = proxy)))
q = "name='%s' and mimeType='application/vnd.google-apps.spreadsheet' and trashed=false" % sp_title
files = drive_service.files().list(q=q).execute()
f = files.get('files')
if f:
return f[0]['id']
# ---

sheets_service = build('sheets', 'v4', http=creds.authorize(httplib2.Http(proxy_info = proxy)))
sp_title = sp_name

spreadsheet_req_body = {
'properties': {
'title': sp_title
}
}
spreadsheet = sheets_service.spreadsheets().create(body=spreadsheet_req_body,
fields='spreadsheetId').execute()
return spreadsheet.get('spreadsheetId')

注意:

  • 在此修改中,我使用 https://www.googleapis.com/auth/drive.metadata.readonly 作为范围。因此,请启用 Drive API 并添加范围并删除包含访问 token 和刷新 token 的文件,然后再次运行脚本来授权范围。这样,附加范围可以反射(reflect)到访问 token 。请小心这一点。

引用:

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

关于python - Google 表格使用名称查找以前创建的工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57341375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com