【问题标题】:Export data from the Google Sheet to PDF PYTHON将 Google 表格中的数据导出为 PDF PYTHON
【发布时间】:2020-11-28 13:14:25
【问题描述】:

我正在使用下面的代码获取谷歌表格中的所有数据, 我想将所有这些数据写入 pdf 文件并下载。

import gspread
import sys 
print(sys.path)
import os
#sys.path.append('/usr/lib/python3/dist-packages')
from oauth2client.service_account import ServiceAccountCredentials

scope = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
path = os.path.abspath('cred.json')
credentials=ServiceAccountCredentials.from_json_keyfile_name('cred.json',scope)
client=gspread.authorize(credentials)
sheet=client.open('xyz').sheet1
data=sheet.get_all_records()
print(data)

【问题讨论】:

  • 好吗? Soooo....有什么问题?您当前的代码是否遇到问题?发生了什么问题?
  • 您希望将xyz 的 Google 电子表格的第一个标签下载为 PDF 文件。我的理解正确吗?
  • 我的代码正在运行,是的,我想以 pdf 格式下载 xyz 表的所有数据,@Tanaike。你能告诉我我该怎么做。
  • 感谢您的回复。从你的回复中,我建议了一个答案。你能确认一下吗?如果这不是您期望的结果,我深表歉意。

标签: python google-sheets-api gspread


【解决方案1】:

我相信你的目标如下。

  • 您希望使用 gspread 与 python 和服务帐户将 xyz 的 Google 电子表格导出为 PDF 文件。

修改点:

  • 不幸的是,在现阶段,Spreadsheet 似乎无法使用 gspread 直接导出为 PDF 文件。所以在本例中,使用了requests 库和用于将电子表格导出为 PDF 的端点。

当点反映到你的脚本中时,它变成如下。

修改脚本:

import gspread
import sys 
print(sys.path)
import os
#sys.path.append('/usr/lib/python3/dist-packages')
from oauth2client.service_account import ServiceAccountCredentials

scope = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
path = os.path.abspath('cred.json')
credentials=ServiceAccountCredentials.from_json_keyfile_name('cred.json',scope)
client=gspread.authorize(credentials)

# I added below script
spreadsheet_name = 'xyz'
spreadsheet = client.open(spreadsheet_name)
url = 'https://docs.google.com/spreadsheets/export?format=pdf&id=' + spreadsheet.id
headers = {'Authorization': 'Bearer ' + creds.create_delegated("").get_access_token().access_token}
res = requests.get(url, headers=headers)
with open(spreadsheet_name + ".pdf", 'wb') as f:
    f.write(res.content)

注意:

  • 在这个修改后的脚本中,它假设您已经能够使用 Sheets API 从 Google 电子表格中获取值。请注意这一点。
  • 如果出现与 Drive API 相关的错误,请在 API 控制台启用 Drive API。
  • 如出现服务账号错误,请将create_delegated("")修改为create_delegated("email of the service account")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2020-03-17
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多