Могу ли я обновить ячейки, не получая их текущие значения, сначала используя gspread - PullRequest
4 голосов
/ 29 апреля 2019

У меня есть лист Google, в который я вставляю / обновляю значения, основанные на результатах некоторых вызовов API, которые я делаю в скрипте Python.

Следуя распространенной документации, я в настоящее время выбираю диапазон из листа, затем обновляю значения и записываю его обратно.

Но меня не волнуют значения в таблице, я бы предпочел писать вслепую, сохраняя драгоценную квоту чтения API.

Есть ли способ, которым я могу писать в ячейки, не читая их сначала?

Я погуглил кого-то, у кого была такая же проблема, и я не могу найти где-нибудь, что говорит мне, как я могу это сделать (или даже могу ли я вообще)

Текущий код:

(rowData - это данные, которые я собрал ранее в скрипте Python, которые я сейчас хочу записать в таблицу)

try:
        rowToUpdate = sheet.range("A"+str(index)+":Q"+str(index))
except Exception as e:
        print("Couldn't fetch rowToUpdate, error message was: ")
        print(repr(e))

try:
        for cell, value in zip(rowToUpdate, rowData):
            cell.value = value
        sheet.update_cells(rowToUpdate)

В идеале я бы просто сделал что-то вроде:

    try:
        for cell, value in zip(rowToUpdate, rowData):
            cell.value = value
        sheet.update_cells(rowToUpdate)```

1 Ответ

2 голосов
/ 08 мая 2019

Вы можете сделать это, используя библиотеку Sheetfu (я - автор): https://github.com/socialpoint-labs/sheetfu

Следующий код просто устанавливает значения без фактического получения значений первым:

from sheetfu import SpreadsheetApp as sa

spreadsheet = sa('path/to/secret.json').open_by_id('<insert spreadsheet id here>')
sheet = spreadsheet.get_sheet_by_name('<insert the sheet name here>')

# make sure your data is already in a 2D matrix form
input_data = [[1,2], [3,4]]

data_range = sheet.get_range(
    row=1, 
    column=1, 
    number_of_row=len(input_data), 
    number_of_column=len(input_data[0])
)

data_range.set_values(input_data)

Этот код не запрашивает лист и получает текущие значения.Он будет только устанавливать значения, используя ваши данные.

...