Python и Google Sheets API: Загружаем данные | Часть 2 | Google Sheets API Python

Sdílet
Vložit
  • čas přidán 11. 07. 2024
  • ↩️ Прошлая серия: • Парсим сайты конкурент...
    🔥 Курс по Python: python.smysl.io/
    📢 Канал в Телеграме: t.me/kulichevskiy
    СОДЕРЖАНИЕ
    00:00 - Начало
    00:30 - Что такое API
    03:08 - библиотека gspread
    04:13 - получаем доступ к API
    08:30 - создаем сервисный аккаунт
    14:11 - загружаем данные в Google-таблицу
    ОБО МНЕ
    👋 Привет! Меня зовут Алексей. Я работаю в IT, занимал ключевые позиции в Групоне, Gett, Яндекс-Логистике и Osome. Я люблю преподавать, и у меня получается делать сложные вещи понятными. Хочу помогать людям не бояться нового и понимать, как технологии могут сделать нашу жизнь лучше.

Komentáře • 21

  • @kulichevskiy
    @kulichevskiy  Před 5 měsíci

    🔥 Курс про автоматизацию рутины с помощью Python: python.smysl.io/

  • @user-mz4tn7ig6i
    @user-mz4tn7ig6i Před 5 měsíci

    Понятно объясняешь-далеко не у всех так понятно. Спасибо за такой классный труд

  • @user-rf6ju3qx4t
    @user-rf6ju3qx4t Před 3 měsíci

    Спасибо дружище, ты лучший!!!

  • @user-eo3nf6wk9i
    @user-eo3nf6wk9i Před 5 měsíci

    Молодец, спасибо за информацию!

  • @kramersaw
    @kramersaw Před 4 měsíci

    Ты просто лучший, мужик!

  • @AnatoliyShevchenko-pt1yp
    @AnatoliyShevchenko-pt1yp Před 3 měsíci

    Мужик ты бог просто, спасибо

  • @balakirevandrey7856
    @balakirevandrey7856 Před 5 měsíci

    Ну ты крут)))

  • @rainnbow9712
    @rainnbow9712 Před 2 měsíci

    спасибо большое

  • @flyingtowardsthesky
    @flyingtowardsthesky Před 4 měsíci +1

    Супер! Спасибо за подробные разъяснения, узнала очень много нового! Я не программист, но у меня все получилось. Я учусь кодить в гугл колаб, и там возникла проблема: AttributeError: module 'gspread' has no attribute 'service_account'. С помощью интернета проблему получилось решить. Причина в устаревшей версии библиотеки. По умолчанию колаб импортирует gspread 3.4.2. Установила версию 5.4.0 (!pip install gspread==5.4.0) и все сработало.

  • @bespalove4882
    @bespalove4882 Před měsícem

    Добрый день!
    Подскажите, на какой должности можно работать с такими знаниями?

  • @alexander199740
    @alexander199740 Před měsícem

    загрузили мы 20 строк, хочу чтобы при выполнении скрипта он каждый раз искал первую пустую строку и вписывал строки, чтобы подряд шло все)

  • @KalininVladimir
    @KalininVladimir Před 4 měsíci

    Приветствую. Столкнулся с такой проблемой: если считывать около 100 строк, выходит ошибка, из за превышения какого то лимита.
    Можете подсказать, как обойти это ограничение?

    • @kulichevskiy
      @kulichevskiy  Před 4 měsíci

      А можете точный текст ошибки написать?

    • @kulichevskiy
      @kulichevskiy  Před 4 měsíci +1

      И, идеально, если еще строчку кода, при которой ошибка возникает

    • @KalininVladimir
      @KalininVladimir Před 4 měsíci

      @@kulichevskiy
      Скорее всего здесь:
      data_dict = {}
      if base_index and approved_index and status_index != "Данные внесены": # and status_index is not None
      for row_index, row in enumerate(all_values[2:], start=3): # Начинаем с третьей строки
      status_value = row[status_index]
      if status_value != "Данные внесены":
      base_value = row[base_index]
      approved_value = row[approved_index]
      if approved_value: # Проверяем, что значение столбца "Утвержденная правка" не пустое
      print("6")
      data_dict.setdefault(base_value, []).append(approved_value)
      # Добавляем статус правки в колонку "Статус правки" в той же строке
      worksheet.update_cell(row_index, status_index + 1, "Данные внесены")
      worksheet.update_cell(row_index, date_reference + 1, current_datetime)
      print("7")
      else:
      print("8")
      worksheet.update_cell(row_index, status_index + 1, "-")
      worksheet.update_cell(row_index, date_reference + 1, "-")
      print("9")
      Между print("8") и print("9"):
      скрин:
      monosnap.com/file/6aDHTCEtX6EC4WeFNRsT9t2FPjWQJs

    • @kulichevskiy
      @kulichevskiy  Před 4 měsíci

      В сообщениях об ошибке самое ценное обычно в конце, а у вас образолось :(

    • @KalininVladimir
      @KalininVladimir Před 4 měsíci

      No error handlers are registered, logging exception.
      Traceback (most recent call last):
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/.venv/lib/python3.9/site-packages/telegram/ext/_application.py", line 1118, in __create_task_callback
      return await coroutine # type: ignore[misc]
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/.venv/lib/python3.9/site-packages/telegram/ext/_basehandler.py", line 157, in handle_update
      return await self.callback(update, context)
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/PY_FRONT/tgbot_exp.py", line 248, in google_back_in_data
      worksheet.update_cell(row_index, date_reference + 1, "-")
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/.venv/lib/python3.9/site-packages/gspread/worksheet.py", line 712, in update_cell
      data = self.client.values_update(
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/.venv/lib/python3.9/site-packages/gspread/http_client.py", line 157, in values_update
      r = self.request("put", url, params=params, json=body)
      File "/Users/vladimirkalinin/Documents/drive-download-20240215T211616Z-001/1_NEURO-MANAGER-CHAT/5_noDOCKER/.venv/lib/python3.9/site-packages/gspread/http_client.py", line 112, in request
      raise APIError(response)
      gspread.exceptions.APIError: {'code': 429, 'message': "Quota exceeded for quota metric 'Write requests' and limit 'Write requests per minute per user' of service 'sheets.googleapis.com' for consumer 'project_number:909537275789'.", 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.ErrorInfo', 'reason': 'RATE_LIMIT_EXCEEDED', 'domain': 'googleapis.com', 'metadata': {'quota_limit': 'WriteRequestsPerMinutePerUser', 'service': 'sheets.googleapis.com', 'consumer': 'projects/909537275789', 'quota_location': 'global', 'quota_limit_value': '60', 'quota_metric': 'sheets.googleapis.com/write_requests'}}, {'@type': 'type.googleapis.com/google.rpc.Help', 'links': [{'description': 'Request a higher quota limit.', 'url': 'cloud.google.com/docs/quota#requesting_higher_quota'}]}]}