正在验证以使用 Google Sheets REST api 和 Python

Authenticating to use Google Sheets REST api with Python

我正在尝试使用本地 (mac) python 程序将一行附加到 google sheet。我天真地认为下面的代码片段就足够了:

import requests
url = "https://sheets.googleapis.com/v4/spreadsheets/SHEETID/values/Expenses!A1:D1:append?valueInputOption=USER_ENTERED"
data = {
    "range": "Expenses!A1:D1",
    "majorDimension": "ROWS",
    "values": [
        [NEW ROW DATA]]
    ],
}


resp = requests.post(url, data)

我遇到错误:

401: "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.

我不确定如何设置 google sheet 其余 api 的身份验证。

任何人都可以提供一个如何解决这个问题的例子。

您可以尝试 documentation 中的示例 python 代码。

"""
BEFORE RUNNING:
---------------
1. If not already done, enable the Google Sheets API
   and check the quota for your project at
   https://console.developers.google.com/apis/api/sheets
2. Install the Python client library for Google APIs by running
   `pip install --upgrade google-api-python-client`
"""
from pprint import pprint

from googleapiclient import discovery

# TODO: Change placeholder below to generate authentication credentials. See
# https://developers.google.com/sheets/quickstart/python#step_3_set_up_the_sample
#
# Authorize using one of the following scopes:
#     'https://www.googleapis.com/auth/drive'
#     'https://www.googleapis.com/auth/drive.file'
#     'https://www.googleapis.com/auth/spreadsheets'
credentials = None

service = discovery.build('sheets', 'v4', credentials=credentials)

# The ID of the spreadsheet to update.
spreadsheet_id = 'my-spreadsheet-id'  # TODO: Update placeholder value.

# The A1 notation of a range to search for a logical table of data.
# Values will be appended after the last row of the table.
range_ = 'my-range'  # TODO: Update placeholder value.

# How the input data should be interpreted.
value_input_option = ''  # TODO: Update placeholder value.

# How the input data should be inserted.
insert_data_option = ''  # TODO: Update placeholder value.

value_range_body = {
    # TODO: Add desired entries to the request body.
}

request = service.spreadsheets().values().append(spreadsheetId=spreadsheet_id, range=range_, valueInputOption=value_input_option, insertDataOption=insert_data_option, body=value_range_body)
response = request.execute()

# TODO: Change code below to process the `response` dict:
pprint(response)

还有

由于您正在使用访问其他用户数据的应用程序,因此请打开本指南 Authorize Requests 以了解有关身份验证凭据的更多信息。