Могут ли заметки и цвета в ячейках подвергаться сомнению?
Я пытаюсь изучить Python и эту функцию Google API, и мне интересно, могут ли примечания и цвета ячейки запрашиваться в обычном или в другом виде? Если да, может кто-нибудь указать мне правильное направление или документацию?
До сих пор я нашел две вещи, которые выглядят так, как будто они могут помочь, но я не совсем понимаю, как адаптировать что-либо из этого к Python или просто что использовать.
Сценарии Google Apps - доступ к заметкам и комментариям к ячейкам
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());
Надеюсь это поможет.