Ошибка электронной таблицы - попытка доступа к Google Sheets - PullRequest
0 голосов
/ 10 марта 2020

Я проверяю этот код.

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# use creds to create a client to interact with the Google Drive API

scope = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive.readonly']

creds = ServiceAccountCredentials.from_json_keyfile_name('C:\\my_path\\client_secret.json', scope)
client = gspread.authorize(creds)

# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("Test_Sheet").sheet1

# Extract and print all of the values
list_of_hashes = sheet.get_all_records()
print(list_of_hashes)

Я получаю эту ошибку:

SpreadsheetNotFound

Я следовал инструкциям по ссылке ниже.

https://medium.com/datadriveninvestor/use-google-sheets-as-your-database-using-python-77d40009860f

Возможно, я пропустил шаг в ссылке, но я так не думаю. Возможно, что-то изменилось в GCP с момента публикации этой статьи, чуть более 1 года go. Это вероятно, поскольку облако является очень динамичным c местом. Как лучше всего решить проблему такого рода? Мне бы очень хотелось, чтобы эта штука работала, в основном как учебное упражнение, но я также вижу, что это очень полезно, довольно скоро, в моей работе. Спасибо.

1 Ответ

0 голосов
/ 11 марта 2020

Хорошо, я наконец понял это. Face plant here ...

В файле с именем «statup_funding. json» необходимо получить созданное электронное письмо, затем нажать кнопку «Поделиться» в электронной таблице и вставить ЭТО АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ в открывшемся окне. Тогда все работает как положено. Вот окончательная версия моего теперь работающего кода.

import gspread
#Service client credential from oauth2client
from oauth2client.service_account import ServiceAccountCredentials
# Print nicely
import pprint
#Create scope
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
#create some credential using that scope and content of startup_funding.json
creds = ServiceAccountCredentials.from_json_keyfile_name('startup_funding.json',scope)
#create gspread authorize using that credential
client = gspread.authorize(creds)
#Now will can access our google sheets we call client.open on StartupName
sheet = client.open('Test_Sheet').sheet1
pp = pprint.PrettyPrinter()
results = sheet.get_all_records()
results
...