当前位置: 首页 > 知识库问答 >
问题:

如何使用Google Sheets API V4导入CSV文件

梁烨
2023-03-14

我正在开发一个Python2.7脚本,该脚本分析SQL表中的数据,最后生成一个CSV文件。

生成文件后,我将登录到我的google sheet帐户,并使用导入选项将我的CSV文件导入到google电子表格中

手工劳动有点愚蠢,我想把这个能力添加到我的脚本中。

因此,我遵循了这个指南,Python快速入门,并且能够完成所有步骤。

然后,我遵循GoogleSheetsAPI参考并研究了方法:电子表格。创造如果我理解正确,它不提供从文件导入的选项。

似乎没有用于导入功能的API。

如何使用Google Sheets API V4导入CSV文件?他们是我遗漏的一个例子/参考吗?

共有3个答案

家浩瀚
2023-03-14

萨姆·柏林回答的另一个选择。如果你使用Python,你可以使用驱动器API通过gdia导入一个CSV文件。这里有一个例子:

import gspread

# Check how to get `credentials`:
# https://github.com/burnash/gspread

gc = gspread.authorize(credentials)

# Read CSV file contents
content = open('file_to_import.csv', 'r').read()

gc.import_csv('<SPREADSHEET_ID>', content)

相关问题:使用gspread将CSV上传到谷歌表单

卞琨
2023-03-14

我花了几个小时试着让其他任何答案都起作用。库不能很好地解释身份验证,也不能使用谷歌提供的处理凭证的方法。另一方面,Sam的回答没有详细说明使用API的细节,这有时可能会令人困惑。因此,下面是将CSV上传到GSheet的完整方法。它使用了Sam和CapoChino的答案以及我自己的一些研究。

  • 验证/设置。一般情况下,请参考文档

希望现在您已经存储了凭据,所以让我们转到实际代码

import pickle
from googleapiclient.discovery import build

SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' # Get this one from the link in browser
worksheet_name = 'Sheet2'
path_to_csv = 'New Folder/much_data.csv'
path_to_credentials = 'Credentials/token.pickle'


# convenience routines
def find_sheet_id_by_name(sheet_name):
    # ugly, but works
    sheets_with_properties = API \
        .spreadsheets() \
        .get(spreadsheetId=SPREADSHEET_ID, fields='sheets.properties') \
        .execute() \
        .get('sheets')

    for sheet in sheets_with_properties:
        if 'title' in sheet['properties'].keys():
            if sheet['properties']['title'] == sheet_name:
                return sheet['properties']['sheetId']


def push_csv_to_gsheet(csv_path, sheet_id):
    with open(csv_path, 'r') as csv_file:
        csvContents = csv_file.read()
    body = {
        'requests': [{
            'pasteData': {
                "coordinate": {
                    "sheetId": sheet_id,
                    "rowIndex": "0",  # adapt this if you need different positioning
                    "columnIndex": "0", # adapt this if you need different positioning
                },
                "data": csvContents,
                "type": 'PASTE_NORMAL',
                "delimiter": ',',
            }
        }]
    }
    request = API.spreadsheets().batchUpdate(spreadsheetId=SPREADSHEET_ID, body=body)
    response = request.execute()
    return response


# upload
with open(path_to_credentials, 'rb') as token:
    credentials = pickle.load(token)

API = build('sheets', 'v4', credentials=credentials)

push_csv_to_gsheet(
    csv_path=path_to_csv,
    sheet_id=find_sheet_id_by_name(worksheet_name)
)

直接使用batchUpdate的好处是它可以在一秒钟内上传数千行。在低级别gspread也执行相同的操作,并且应具有相同的性能。还有大熊猫。

p、 代码是用python3.5测试的,但是这个线程似乎最适合提交给。

查飞星
2023-03-14

导入gCSV文件有两个选项。可以使用Drive API从CSV创建电子表格,也可以使用Sheets API创建空电子表格,然后使用带有PasteDataRequest的spreadsheets.batchUpdate添加CSV数据。

 类似资料:
  • 我正在努力使用mongoimport从CSV文件导入Mongodb的ObjectId: 我尝试了我能想到的所有组合和转义方法,但无法从CSV正确导入ObjectId。 首先,我尝试准确地将从MongoDB导出的内容导入到CSV。我正在使用MongoDB 2.2.1。 我刚刚创建了两个集合,并在另一个文档中引用了一个文档的_id: 然后我在shell中使用了mongoexport命令: 生成的CSV

  • 我在Postgres中有一个只有两列的表 CSV文件包含以下列: 我怎么能复制gid和名称只从这个文件使用?

  • 本文向大家介绍R导入.csv文件,包括了R导入.csv文件的使用技巧和注意事项,需要的朋友参考一下 示例 使用base R导入 可以使用read.csv来包装逗号分隔的值文件(CSV),该文件可以包装read.table,但可用于sep = ","将分隔符设置为逗号。 用户友好选项file.choose允许浏览目录: 笔记 与不同read.table,read.csv默认为header = TRU

  • 问题内容: 我有一个CSV文件。它包含140万行数据,因此我无法在Excel中打开该csv文件,因为其限制约为100万行。 因此,我想将此文件导入MySQL工作台中。此csv文件包含以下列 我正在尝试在MySQL工作台中创建一个名为“虚拟”的表,其中包含诸如 CSV文件名为。我在工作台中的代码是这样的: 但我收到类似的错误 问题答案: 我想您缺少ENCLOSED BY子句 并指定csv文件的完整路