import gspread
from oauth2client.service_account import ServiceAccountCredentials
def get_form_responses(form_name):
credentials_path = r'C:\Users\Hikkimaru\Desktop\ProDviz\Work\Bot_lvl\.json'
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
credentials_path, scope)
client = gspread.authorize(credentials)
print('Успешно авторизовано.')
# Открываем форму по названию
form = client.open(form_name).sheet1
print('Google Forms открыт.')
# Получаем все ответы на форму
responses = form.get_all_values()
print('Ответы получены.')
return responses
def add_responses_to_sheet(responses, sheet_name, score):
credentials_path = r'C:\Users\Hikkimaru\Desktop\ProDviz\Work\Bot_lvl\.json'
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
credentials_path, scope)
client = gspread.authorize(credentials)
print('Успешно авторизовано.')
# Создаем новую таблицу
spreadsheet = client.create(sheet_name)
print('Новая таблица создана.')
# Получаем ссылку на новую таблицу
sheet_url = spreadsheet.url
# Открываем таблицу по ссылке
sheet = client.open_by_url(sheet_url).sheet1
print('Google Sheets открыт.')
# Получаем текущие баллы из третьего столбца таблицы
current_scores = sheet.col_values(3)
# Вычисляем новые баллы, добавляя score к каждому текущему баллу
new_scores = [str(int(score) + int(s)) for s in current_scores]
print('Баллы обновлены.')
# Получаем ответы на вопросы 1 и 2 из списка ответов
question1_responses = [response[0] for response in responses]
question2_responses = [response[1] for response in responses]
# Обновляем таблицу с ответами и баллами
for i in range(len(responses)):
# Обновляем ячейку в первом столбце
sheet.update_cell(i + 2, 1, question1_responses[i])
# Обновляем ячейку во втором столбце
sheet.update_cell(i + 2, 2, question2_responses[i])
# Обновляем ячейку в третьем столбце
sheet.update_cell(i + 2, 3, new_scores[i])
print('Ответы успешно добавлены в Google Sheets.')
# Вводим название Google Forms, Google Sheets и количество баллов
form_name = input('Введите название Google Forms: ')
sheet_name = input('Введите название Google Sheets: ')
score = input('Введите количество баллов: ')
print('Получение ответов из Google Forms...')
responses = get_form_responses(form_name)
print('Добавление ответов в Google Sheets...')
add_responses_to_sheet(responses, sheet_name, score)
Я столкнулся с проблемой при использовании библиотеки gspread для доступа к форме на Google Drive. При попытке открыть форму с помощью функции client.open(form_name), возникает ошибка gspread.exceptions.SpreadsheetNotFound. Я уверен, что путь к форме указан правильно и сервисный аккаунт имеет соответствующие права доступа. Что я могу сделать, чтобы решить эту проблему и успешно получить доступ к форме на Google Drive?
до этого работал с API календаря там все было нормально