Задать вопрос
Tokishu
@Tokishu
Что?

Почему GoogleAPI не может найти документ?

Я сделал скрипт на питоне который читает гугул документ и сравнивает нужные мне параметры, но когда он пытается найти документ у него почему-то это не получается.
Выдаёт 404

PS C:\Users\yanow\Desktop\TestScript> python3 main.py
Введите ключ Google Документа: 1c1VA72C1MOYhZ96kNjvjzG0d5eaJ3TfJuxRot1gQJnQ
Введите желаемое количество символов: 1
Введите желаемое количество слов: 1
Введите желаемое количество пробелов: 1
Введите путь к файлу JSON для сохранения результатов:
Traceback (most recent call last):
  File "C:\Users\yanow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\gspread\client.py", line 207, in open_by_key
    spreadsheet = Spreadsheet(self, {"id": key})
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\yanow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\gspread\spreadsheet.py", line 37, in __init__
    metadata = self.fetch_sheet_metadata()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\yanow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\gspread\spreadsheet.py", line 247, in fetch_sheet_metadata
    r = self.client.request("get", url, params=params)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\yanow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\gspread\client.py", line 94, in request
    raise APIError(response)
gspread.exceptions.APIError: {'code': 404, 'message': 'Requested entity was not found.', 'status': 'NOT_FOUND'}

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\yanow\Desktop\TestScript\main.py", line 19, in <module>
    doc = client.open_by_key(google_doc_key)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\yanow\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\gspread\client.py", line 210, in open_by_key
    raise SpreadsheetNotFound(ex.response) from ex
gspread.exceptions.SpreadsheetNotFound: <Response [404]>
PS C:\Users\yanow\Desktop\TestScript>


Если нужно вот код

import re
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import json

google_doc_key = input("Введите ключ Google Документа: ")
target_char_count = int(input("Введите желаемое количество символов: "))
target_word_count = int(input("Введите желаемое количество слов: "))
target_space_count = int(input("Введите желаемое количество пробелов: "))
json_file_path = input("Введите путь к файлу JSON для сохранения результатов: ")

scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
credentials = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(credentials)
doc = client.open_by_key(google_doc_key)
worksheet = doc.get_worksheet(0)
doc_text = worksheet.get_all_values()
full_text = " ".join(" ".join(row) for row in doc_text)
char_count = len(full_text)
word_count = len(re.findall(r'\w+', full_text))
space_count = len(re.findall(r'\s', full_text))

if char_count == target_char_count and word_count == target_word_count and space_count == target_space_count:
    print("Параметры текста соответствуют заданным значениям.")
else:
    print("Параметры текста не соответствуют заданным значениям.")
result = {
    "Char Count": char_count,
    "Word Count": word_count,
    "Space Count": space_count
}

with open(json_file_path, 'w') as json_file:
    json.dump(result, json_file)
print(f"Результаты сохранены в файле: {json_file_path}")
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Не хватает скоупа https://www.googleapis.com/auth/spreadsheets

А вот https://spreadsheets.google.com/feeds можно удалить, такого не существует
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы