Как удалить строки в электронной таблице Google, используя SHEET API v4 от Python? - PullRequest
0 голосов
/ 16 мая 2019

Мой код следующий

def write_cells(spreadsheet_id, update_data):
updating = sheet_service.spreadsheets().values().\
        batchUpdate(spreadsheetId=spreadsheet_id, body=update_data)
updating.execute()

spreadsheet_data = [
    { 
        "deleteDimension": {
        "range": {
          "sheetId": sheet_id,
          "dimension": "ROWS",
          "startIndex": 5,
          "endIndex": 100
         }              
        }
       }
]    

update_spreadsheet_data = {
    'valueInputOption': 'USER_ENTERED',
    'data': spreadsheet_data
}

update_data = update_spreadsheet_data

write_cells(spreadsheet_id, update_data)

У меня следующее сообщение об ошибке

HttpError                                 Traceback (most recent call last)
<ipython-input-64-0ba8756b8e85> in <module>()
----> 1 write_cells(spreadsheet_id, update_data)

2 кадра

/usr/local/lib/python3.6/dist-packages/googleapiclient/http.py in execute(self, http, num_retries)
    838       callback(resp)
    839     if resp.status >= 300:
--> 840       raise HttpError(resp, content, uri=self.uri)
    841     return self.postproc(resp, content)
    842 

HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/1lAI8gp29luZDKAS1m3P62sq0kKCn8eaMUvO_M_J8meU/values:batchUpdate?alt=json returned "Invalid JSON payload received. Unknown name "delete_dimension" at 'data[0]': Cannot find field.">

Я не понимаю этого: "Неизвестное имя delete_dimension". Я не могу решить это. Любая помощь приветствуется, спасибо.

1 Ответ

1 голос
/ 16 мая 2019
  • Вы хотите удалить строки, используя API Sheets с Python.

Если мое понимание верно, как насчет этой модификации?

Очки модификации:

  • При удалении строк в электронной таблице используйте spreadsheets().batchUpdate().
  • Я думаю, что spreadsheet_data правильно.
  • В этом случае измените тело запроса на {"requests": spreadsheet_data}.

Модифицированный скрипт:

def write_cells(spreadsheet_id, update_data):
    # Modified
    updating = sheet_service.spreadsheets().batchUpdate(
        spreadsheetId=spreadsheet_id, body=update_data)
    updating.execute()


spreadsheet_data = [
    {
        "deleteDimension": {
            "range": {
                "sheetId": sheet_id,
                "dimension": "ROWS",
                "startIndex": 5,
                "endIndex": 100
            }
        }
    }
]

update_spreadsheet_data = {"requests": spreadsheet_data} # Modified

update_data = update_spreadsheet_data
write_cells(spreadsheet_id, update_data)

Примечание:

  • Этот модифицированный скрипт предполагает, что вы уже можете использовать Sheets API.

Справка:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...