Google Sheets API + Python, WRITE to a spreadsheet with a Service Account

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 17

  • @AzzraelCode
    @AzzraelCode  3 ปีที่แล้ว +1

    Пока с Google Sheets API я закончил. Но, на самом деле, в этом апи есть ещё много чего интересного. Конечно есть методы по стилизации, условному форматированию, формулам и всякому такому. Если вам интересно продолжение темы с Google Sheets API - пишите в комментариях к этому и предыдущему видео. Напишите что вам интересно в первую очередь...

    • @sleepyeconomist509
      @sleepyeconomist509 2 ปีที่แล้ว

      Здравствуйте! Прикрутил простенький интерфейс tkinter, потом решил собрать для дальнейшего использования через pyinstaller -F __main__pyw. Но после сборки при попытке отправки данных получаю ошибку отсутствия creds sacc1.json. Также и после сборки pyinstaller __main__.py , если не добавить вручную папку creds в папку с проектом, получаю такую же ошибку. Заранее благодарю!
      P. S. Я очень начинаюший)

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว +1

      Вероятно так и должно быть. Я просто вынул из репозитория папку со своими токенами (creds), вам нужно создать её, прописать туда ваши токены (соотв создать проект в GCP, если у вас есть там акк) и только после этого собирать. Возможно что-то сделать в настройках pyinstaller (я с ним не работал).

  • @andrewtcoder
    @andrewtcoder 2 ปีที่แล้ว +2

    Огромное спасибо за такие полезные и подробные видео!
    Если кому-то нужно создать новый лист в текущем документе то можно использовать вот этот код (код как раз подойдет для текущего проекта из видео):
    new_tab_title = "новый лист"
    body = {
    'requests': [{
    'addSheet': {
    'properties': {
    'title': new_tab_title,
    'tabColor': {
    'red': 0.44,
    'green': 0.99,
    'blue': 0.50
    }
    }
    }
    }]
    }
    result = sheet.batchUpdate(
    spreadsheetId=sheet_id,
    body=body).execute()
    print(result)

  • @jedak888
    @jedak888 3 ปีที่แล้ว +3

    Спасибо за разбор. Так же интересно было бы разобраться в прямом парсинге с записью с разу в гугл таблицы

  • @sleepyeconomist509
    @sleepyeconomist509 2 ปีที่แล้ว

    Спасибо большое за проделанный труд! Твои наработки очень помогли!

  • @lxlermit
    @lxlermit 3 ปีที่แล้ว +1

    Большое спасибо за прекрасное видео.
    p.s.: после пары опытов есть ответ на ваш вопрос ! OVERWRITE vs insert_rows :
    Есть разница и ее легко увидеть , заполнив таблицу [(1,1,1),(1, ,1),(1,1,1)] , т.е. ячейка B2 свободна и вставлять массив 3*3 в нее. insert_rows - вставит 3 строки целиком, сместив низ таблицы, а OVERWRITE - вставит ровно в B2 а все правее и ниже перезапишет.

  • @werd8500
    @werd8500 3 ปีที่แล้ว +1

    Спасибо!

  • @python_cheatsheet_by_eugene
    @python_cheatsheet_by_eugene 3 ปีที่แล้ว +1

    Было бы очень круто увидеть урок, как можно сделать выборку конкретных полей из моделей базы данных и загрузить их в файл excel через Google Sheets API. Приоритетно, используя Django

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว +1

      Хммм... Записал. Подумаю.
      ~~
      Так то в клиентах к Google API (будь то питон или пхп) данные для записи в таблицу это обычный плоский двумерный массив. Соотв. в таком примере все сведется лишь к выбору оптимального способа превращения моделей конкретной ORM в плоский массив элементов стандартных типов. В каких то ORM такие методы встроены (getattributes в eloquent laravel), а в sqlalchemy, например, придется писать такие методы. И, в любом сл, это задача никак не будет связана с любыми эл таблицами (будь то Google Sheets или MS Excel). Ну то есть притянуть за уши то можно, но объективно это разные задачи )))
      ~~
      Если брать конкретно джанго, то гуглим что-то типа django query set to list/dict/dataframe и выбираем наиболее приятное решение.

  • @slayer-mk5tl
    @slayer-mk5tl 3 ปีที่แล้ว

    доходчиво

  • @АлексейХарланов-э3ю
    @АлексейХарланов-э3ю 2 ปีที่แล้ว

    Здравствуйте, есть вариант поменять значения batchUpdate, где range в виде координат ячеек?

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว

      Если я правильно понял вопрос, то доступные форматы координат указаны здесь developers.google.com/sheets/api/guides/concepts#cell в разделе A1 notation. И в массив data вы можете передать данные по ячейкам, в т.ч. по каждой ячейке отдельно.

  • @python689
    @python689 2 ปีที่แล้ว

    Здравствуйте, перешел по исходному коду из видео. Там другой код. Можете дать код из видео?

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว

      Код в том же репозитории просто в другой ветке ;)
      Вот прямая ссылка github.com/AzzraelCode/google-sheets/blob/video-2-sacc-update-sheet/__main__.py

  • @kirill7707
    @kirill7707 2 ปีที่แล้ว

    добрый день. столкнулся с проблемой которую решить я не в силах, помогите пожалуйста!!! весь код идентичен, все делаю как у вас написанои и показано но ничего не помогает. код ошибки: Traceback (most recent call last):
    File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.2\plugins\python-ce\helpers\pydev\pydevd.py", line 1496, in _exec
    pydev_imports.execfile(file, globals, locals) # execute the script
    File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.2\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"
    ", file, 'exec'), glob, loc)
    File "C:/Users/23/PycharmProjects/xls12/main.py", line 35, in
    sheet = get_service_sacc().spreadsheets()
    File "C:/Users/23/PycharmProjects/xls12/main.py", line 31, in get_service_sacc
    creds_service = ServiceAccountCredentials.from_json_keyfile_name(creds_json, scopes).authorize(httplib2.Http())
    File "C:\Users\23\PycharmProjects\xls12\venv\lib\site-packages\oauth2client\service_account.py", line 221, in from_json_keyfile_name
    return cls._from_parsed_json_keyfile(client_credentials, scopes,
    File "C:\Users\23\PycharmProjects\xls12\venv\lib\site-packages\oauth2client\service_account.py", line 171, in _from_parsed_json_keyfile
    raise ValueError('Unexpected credentials type', creds_type,
    ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account')
    python-BaseException

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว +1

      Судя по всему у вас не создан json файлик с секретками сервисного аккаунта, я описал порядок установки здесь github.com/AzzraelCode/google-sheets.
      У меня есть несколько роликов о создании токенов в GAPI. Самый короткий th-cam.com/video/fxGeppjO0Mg/w-d-xo.html . Есть и другие, где более подробно с пояснениями.