Задать вопрос
  • Как создать/изменить примечание (Note) в Google.Sheets.API?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    from googleapiclient.discovery import build
    from google.oauth2 import service_account
    
    # Укажите путь к скачанному JSON-файлу сервисного аккаунта
    SERVICE_ACCOUNT_FILE = 'ваш_сервис_аккаунт_файл.json'
    
    # Настройка доступа
    credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE,
        scopes=['https://www.googleapis.com/auth/spreadsheets'])
    
    service = build('sheets', 'v4', credentials=credentials)
    
    def update_note(spreadsheet_id, sheet_name, cell, note_text):
        # Конвертация имени ячейки в индексы:
        col = ord(cell[0].upper()) - ord('A')
        row = int(cell[1:]) - 1
    
        # Получаем ИД листа:
        spreadsheet = service.spreadsheets().get(
            spreadsheetId=spreadsheet_id,
            fields="sheets(properties(sheetId,title))"
        ).execute()
    
        sheetId = [sheet['properties']['sheetId'] for sheet in spreadsheet['sheets'] if
                   sheet['properties']['title'] == sheet_name][0]
        print(sheetId)
    
        service.spreadsheets().batchUpdate(
            spreadsheetId=spreadsheet_id,
            body={
                "requests": [{
                    "updateCells": {
                        "range": {
                            "sheetId": sheetId,
                            "startRowIndex": row,
                            #"endRowIndex": row + 1,
                            "startColumnIndex": col,
                            #"endColumnIndex": col + 1
                        },
                        "rows": [{"values": [{"note": note_text}]}],
                        "fields": "note"
                    }
                }]
            }
        ).execute()
    
    
    # Использование:
    spreadsheetId = 'ваш ид таблицы'
    update_note(spreadsheetId, "Лист3", "B3", "Тестовое примечание.")


    З.Ы. Для "сложных" ячеек ("AA15" итд.), если у вас такие есть, перепишите конвертацию имени ячейки в индексы, текущая работать не будет корректно.

    Чтение примечания с ячейки:
    def read_note(spreadsheet_id, sheet_name, cell) -> str or None:
        response = service.spreadsheets().get(
            spreadsheetId=spreadsheet_id,
            ranges=[f"{sheet_name}!{cell}"],
            fields='sheets(data.rowData.values.note)'
        ).execute()
    
        note = (response
                .get('sheets', [{}])[0]
                .get('data', [{}])[0]
                .get('rowData', [{}])[0]
                .get('values', [{}])[0]
                .get('note'))
    
        return note
    
    # Использование:
    spreadsheetId = 'ваш ид таблицы'
    read_note(spreadsheetId, 'Лист3', 'B3')
    Ответ написан
    1 комментарий
  • Как получить примечания (Notes) из Google Sheet, используя Python?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    from googleapiclient.discovery import build
    service = build('sheets', 'v4')
    
    response = service.spreadsheets().get(spreadsheetId = spreadsheetId,
        fields = 'sheets(data.rowData.values.note)').execute()
    
    print(response)


    Запустить код "здесь и сейчас" можно по ссылке https://colab.research.google.com/drive/1dbUChgxPF...
    Ответ написан
    2 комментария