versiones guia español actualizar python google-spreadsheet google-api google-sheets-api google-api-python-client

guia - ¿Cómo cambio el nombre de una hoja(de trabajo) en una hoja de cálculo de Hojas de cálculo de Google utilizando la API en Python?



qgis español (3)

Esta es una extracción de una biblioteca que he codificado personalmente:

def _batch(self, requests): body = { ''requests'': requests } return self._service.spreadsheets().batchUpdate(spreadsheetId=self.spreadsheetId, body=body).execute() def renameSheet(self, sheetId, newName): return self._batch({ "updateSheetProperties": { "properties": { "sheetId": sheetId, "title": newName, }, "fields": "title", } })

Creo que con un poco de esfuerzo, puede implementarlo en su código y obtener lo que desea. Para realizar la llamada batchUpdate , necesitará el batchUpdate planilla de cálculo así como el service inicializado tal como se explica en Python QUICKSTART - Hoja de cálculo API de Google

He estado intentando resolver este problema durante mucho tiempo. He leído la documentación de gspread y no puedo encontrar que haya una manera de cambiar el nombre de una hoja de trabajo. ¿Alguno de ustedes sabe cómo hacerlo? ¡Lo apreciaría enormemente! De hecho, hay hoja de trabajo. Título que da el nombre de la hoja de trabajo, pero no puedo encontrar una manera de cambiar el nombre de la hoja real.

¡Gracias de antemano!


Su respuesta se puede resolver a través de una solicitud HTTP de Python.

Enlace está aquí

Debe enviar algún tipo de metadato para la hoja de trabajo a través de HTTP.

Por ejemplo, obtenga el ID de la hoja de trabajo usando Python y envíe la siguiente información:

<entry> <id> https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId </id> <updated>2007-07-30T18:51:30.666Z</updated> <category scheme="http://schemas.google.com/spreadsheets/2006" term="http://schemas.google.com/spreadsheets/2006#worksheet"/> <title type="text">Income</title> <content type="text">Expenses</content> <link rel="http://schemas.google.com/spreadsheets/2006#listfeed" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/key/worksheetId/private/full"/> <link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/key/worksheetId/private/full"/> <link rel="self" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId"/> <link rel="edit" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId/version"/> <gs:rowCount>45</gs:rowCount> <gs:colCount>15</gs:colCount> </entry>

El sitio web también tiene una solución Java y .NET. (Esto es para la versión heredada 3)

Para la versión más nueva, puede usar una actualización por lotes a través de una solicitud POST http de Python también.

el enlace está aquí

Los datos para la solicitud son

{ "requests": [{ "updateSpreadsheetProperties": { "properties": {"title": "My New Title"}, "fields": "title" } }] }

para ser enviado a través de POST a https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate

En ambas solicitudes, reemplace la hoja de cálculo Id en la URL con el ID de la hoja de Google que está editando.

Observe el cambio de v3 a v4 en las URL.

Si está utilizando una aplicación de la versión 3 y desea migrar, el enlace a eso está aquí

EDITAR

Un comentarista señaló que la segunda solicitud no cambia el nombre de una hoja de trabajo. El enlace que agregué muestra la manera de cambiar las propiedades intrincadas de una hoja de trabajo, actualizaré mi respuesta pronto.


Usted podría lograr lo mismo con el puerto gspread para api v4 - pygsheets (autor aquí). El código correspondiente que use hojas de identificación será,

import pygsheets gc = pygsheets.authorize() # Open spreadsheet and then workseet sh = gc.open(''my new ssheet'') wks = sh.sheet1 wks.title = "new title"