将csv文件数据推送到Google表格

问题描述 投票:0回答:3

我需要将csv文件数据加载到Google表格。我使用gspread将csv导入到Google表格中,但是它只能与个人驱动器一起使用,而不能与团队驱动器一起使用。

这是我的下一个方法。

我试图将csv文件的内容列出,然后从列表中更新Google表格的单元格,并得到429错误。如何避免此错误?

row = 1
column = 1
Fi = []
Fi = open("data.csv",'r')
for value in Fi:
    items = value.strip().split(',')
    for item in items:
        sheet.update_cell(row, column, item)
        column +=1
    row +=1
    column = 1

sheet.update_cells(cell_list)
Fi.close()

这是我得到的错误

gspread.exceptions.APIError: {
  "error": {
    "code": 429,
    "message": "Quota exceeded for quota group 'WriteGroup' and limit 'Write requests per user per 100 seconds' of service 'sheets.googleapis.com' for consumer 'project_number:226307199654'.",
    "status": "RESOURCE_EXHAUSTED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developer console API key",
            "url": "https://console.developers.google.com/project/<proj_num>/apiui/credential"
          }
        ]
      }
    ]
  }
}
python csv google-sheets python-requests gspread
3个回答
0
投票

每次完成请求后,尝试使用睡眠功能。作为上述错误,每个写入请求完成后,您需要等待100秒钟以上。


0
投票

您经常打电话给update_cells。根据gspread文档here

您可以批量完成:

cell_list = worksheet.range('A1:C7')
for cell in cell_list:
    cell.value = 'O_o'
# Update in batch
worksheet.update_cells(cell_list)

因此,看来您的解决方案是:

Fi = []
Fi = open("data.csv",'r')
items=[]
for value in Fi:
    for item in value.strip().split(','):
        items.append(item)

cell_list = worksheet.range('A1:ENDRANGE') # according to csv
for cell, item in cell_list, items:
    cell.value=item

sheet.update_cells(cell_list)
Fi.close()

我没有测试。


0
投票

我认为,如果您跟踪写入请求并且仅按照每100秒分配的配额发送请求,则可以解决此问题。并使用睡眠功能等待配额在另一100秒后重置。

import time

row = 1
column = 1
requestCount = 0
writeQuota = 100 #This is the limit for write request per 100 seconds
Fi = []
Fi = open("data.csv",'r')
for value in Fi:
    items = value.strip().split(',')
    for item in items:
        if(requestCount == writeQuota):
            time.sleep(100)
            requestCount = 0
        sheet.update_cell(row, column, item)
        requestCount += 1
        column += 1
    row += 1
    column = 1

sheet.update_cells(cell_list)
Fi.close()

[请尝试检查类似的项目是否有效。也可以尝试睡眠时间,并仔细检查您的写配额。

© www.soinside.com 2019 - 2024. All rights reserved.