Могут ли заметки и цвета в ячейках подвергаться сомнению?

Я пытаюсь изучить Python и эту функцию Google API, и мне интересно, могут ли примечания и цвета ячейки запрашиваться в обычном или в другом виде? Если да, может кто-нибудь указать мне правильное направление или документацию?

До сих пор я нашел две вещи, которые выглядят так, как будто они могут помочь, но я не совсем понимаю, как адаптировать что-либо из этого к Python или просто что использовать.

Сценарии Google Apps - доступ к заметкам и комментариям к ячейкам

https://github.com/burnash/gspread/issues/50

3 ответа

Когда используешьgspread, поддерживаются как установка, так и получение заметок, по крайней мере, начиная с версии 5.7.2. Грубо:

      import gspread 

url = "https://docs.google.com/spreadsheets/d/u7s6yehrblah....."
gc = gspread.service_account()
gs = gc.open_by_url(url)
sheet = gs.get_worksheet(0)

note = sheet.get_note("A1")
sheet.insert_note("A1", f"{note}? I don't think so!")

Я не вижу, как получить/обновить несколько заметок за один раз (например,sheet.batch_update()), поэтому довольно легко столкнуться с максимальным значением по умолчанию в 60 вызовов API в минуту. Если вы хотите предотвратить это, метод Билла Галлахера (построение вызова API вручную) - это путь: указание, например,ranges=['Sheet1'!A1:Z100]даст вам 2600 значений всего за один вызов API.

service.spreadsheets().batchUpdate()позволяет также обновить указанные 2600 значений за один вызов. Упаковка и распаковка заметок или содержимого ячеек могут быть немного хлопотными, но проверка результатовrequest.execute()легко показывает дорогу.

Если вы перешли по ссылке на проблему GitHub, вы видите, что установка примечания решена в GSpread 3.7, но получение было опущено (или я слишком туп, чтобы найти его). Поскольку мне это было нужно, я написал свой собственный, используя объект Google. Предполагая, что вы настроили учетные данные своей служебной учетной записи (так же, как и для ), создайте:

      from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name(filename, scope)
service = discovery.build('sheets', 'v4', credentials=creds)

С serviceи таблица idполучить записку(и):

      fields = 'sheets/data/rowData/values/note'
ranges = ["'Sheet1'!A1")]
request = service.spreadsheets().get(spreadsheetId='1IDDMQqAV5t4Rqblahblah', ranges=ranges, fields=fields)
note_json = request.execute()
try:
    note = note_json['sheets'][0]['data'][0]['rowData'][0]['values'][0]['note']  # <-- there's got to be a better way
except KeyError:
    note = None
print(note)

Это не зависит от gspreadмодель, так что это не здорово, но это работает. Я был бы признателен за отзывы о том, как сделать извлечение заметок из note_jsonв лучшую сторону.

Я думаю, что было бы полезно, если вы сначала узнаете, как Python работает с таблицей Google. Вот быстрый старт Python для электронных таблиц. Убедитесь, что у вас также установлена библиотека Google Data Python.

Есть getBackground(), который может быть полезен для вас. Возвращает цвет фона верхней левой ячейки в диапазоне (т. Е. "#Ffffff"). Тем не менее, попробуйте найти эквивалент в Python.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
Logger.log(cell.getBackground());

Надеюсь это поможет.

Другие вопросы по тегам