首页 > 解决方案 > 如何使用 pygsheets(带或不带 Pandas)将 Excel 表格或 CSV 插入 Google 表格?

问题描述

我在 Excel 工作表中有一些数据,我需要通过一个简短的 python 脚本以编程方式将其插入到 Google 工作表中。我正在使用 pygsheets 和 pandas(如果我需要的话)。我已经设置了身份验证内容,并且可以访问要在其中插入数据的工作表;这只是我遇到问题的使用 pygsheets 的实际插入。这是一些代码:

from google.oauth2 import service_account
import pygsheets
import pandas as pd
import json

# set settings file
settings_file = open("/Users/user/Desktop/settings.json", "r").read()
settings = json.loads(settings_file)
creds = settings['oauth_creds']
credentials = service_account.Credentials.from_service_account_info(creds)
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/spreadsheets']
)

# set dataframe as excel sheet (saved on Desktop)
new_data = pd.read_excel('/Users/user/Desktop/test-data.xlsx', None)

# instantiate pygsheets with credentials
gc = pygsheets.authorize(custom_credentials=scoped_credentials)

# open spreadsheet with URL
sheet_url = settings['sheet_url']
sh = gc.open_by_url(sheet_url)

# activate correct sheet
sheet_name = settings['data_sheet']
wks = sh.worksheet_by_title(sheet_name)

# empty active sheet
wks.clear()

# add dataframe to active sheet
wks.set_dataframe(new_data,(1,1))

当我运行脚本时,最后一行出现错误:AttributeError: 'OrderedDict' object has no attribute 'replace'. 知道如何正确地将数据发送到工作表吗?另外,如果它更容易,我可以使用 CSV 来做到这一点;我也不必使用熊猫,如果没有它会更容易。任何帮助表示赞赏!

标签: pythonexcelpandasdataframepygsheets

解决方案


使用 Google 表格生成凭证文件并将其命名为creds.json

  1. 如果您还没有为项目启用 API 访问权限。
  2. 转到“APIs & Services > Credentials”并选择“Create credentials > Service account key”。
  3. 填写表格
  4. 点击“创建密钥”</li>
  5. 选择“JSON”并点击“创建”</li>

然后尝试:

import pygsheets
def upload_to_gsheet(df, sheet_number):
    gc = pygsheets.authorize(service_file=/path/to/creds.json)
    sh = gc.open_by_key(spreadsheet_id)
    wks = sh[sheet_number]
    wks.set_dataframe(df, (1, 1))

推荐阅读