En este documento, se describen los conceptos básicos del uso del recurso spreadsheets.values.
Las hojas de cálculo pueden tener varias hojas, y cada una de ellas puede tener cualquier cantidad de filas o columnas. Una celda es una ubicación en la intersección de una fila y una columna determinadas, y puede contener un valor de datos. La API de Google Sheets proporciona el recurso spreadsheets.values para habilitar la lectura y escritura de valores.
Si necesitas insertar filas o actualizar el formato y otras propiedades en una hoja, debes usar el método batchUpdate del recurso spreadsheets, como se describe en Actualiza hojas de cálculo.
Métodos de recursos
El recurso spreadsheets.values proporciona los siguientes métodos para leer y escribir valores, cada uno para una tarea específica:
| Acceso al rango | Lectura | Escritura |
|---|---|---|
| Rango único | spreadsheets.values.get |
spreadsheets.values.update |
| Varios rangos | spreadsheets.values.batchGet |
spreadsheets.values.batchUpdate |
| Adjunta | spreadsheets.values.append |
En general, es una buena idea combinar varias lecturas o actualizaciones con los métodos batchGet y batchUpdate (respectivamente), ya que esto mejora la eficiencia.
Puedes encontrar muestras de código de cada uno de estos métodos en las páginas de muestras de lectura básica y escritura básica. Para ver todas las muestras de código, consulta la página de descripción general de las muestras.
Leer valores de celdas
Para leer valores de datos de una hoja, necesitas el ID de la hoja de cálculo y la notación A1 para el rango. Si especificas el rango sin el ID de la hoja (A1:B2), la solicitud se ejecutará en la primera hoja de la hoja de cálculo. Para obtener más información sobre los IDs de hojas de cálculo y la notación A1, consulta la Descripción general de la API de Google Sheets.
Varios parámetros de consulta opcionales controlan el formato del resultado:
| Parámetro de formato | Valor predeterminado |
|---|---|
majorDimension |
ROWS |
valueRenderOption |
FORMATTED_VALUE |
dateTimeRenderOption |
SERIAL_NUMBER |
Ten en cuenta que solo debes usar dateTimeRenderOption si valueRenderOption no es FORMATTED_VALUE.
No hay un límite explícito para la cantidad de datos que se devuelven. Los errores no devuelven datos. Se omiten las filas y columnas finales vacías.
Los métodos get individuales y por lotes se describen en las siguientes secciones. Para obtener más muestras de código de operaciones de lectura básicas, consulta Lectura básica.
Cómo leer valores de un solo rango
Para leer un solo rango de valores de una hoja de cálculo, usa una solicitud spreadsheets.values.get:
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
La respuesta a esta solicitud se muestra como un objeto ValueRange que forma parte del recurso spreadsheets.values.
Lee valores de varios rangos
Para leer varios rangos de valores discontinuos de una hoja de cálculo, usa una solicitud spreadsheets.values.batchGet que te permita especificar varios rangos para recuperar:
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
La respuesta a esta solicitud se devuelve como un objeto BatchGetValuesResponse que contiene el objeto spreadsheetId y una lista de objetos ValueRange.
Escribe valores de celdas
Para escribir en una hoja, necesitas el ID de la hoja de cálculo, el rango de celdas en notación A1 y los datos que deseas escribir dentro de un objeto de cuerpo de solicitud adecuado. Para obtener más información sobre los IDs de hojas de cálculo y la notación A1, consulta la descripción general de la API de Google Sheets.
Varios parámetros de consulta controlan cómo se escriben los datos y cómo se formatea la respuesta:
| Parámetro de escritura | Valor predeterminado |
|---|---|
valueInputOption |
(Obligatorio) |
includeValuesInResponse |
false |
responseValueRenderOption |
FORMATTED_VALUE |
responseDateTimeRenderOption |
SERIAL_NUMBER |
El parámetro valueInputOption obligatorio controla cómo se deben interpretar los datos de entrada. (En el caso de las actualizaciones por lotes, este parámetro se especifica en el cuerpo de la solicitud). Las opciones admitidas se describen en la siguiente tabla:
ValueInputOption |
Descripción |
|---|---|
RAW |
La entrada no se analiza y se inserta como una cadena. Por ejemplo, la entrada "=1+2" coloca la cadena, no la fórmula, "=1+2" en la celda. (Los valores que no son cadenas, como los booleanos o los números, siempre se controlan como RAW). |
USER_ENTERED |
La entrada se analiza exactamente como si se hubiera ingresado en la IU de Hojas de cálculo. Por ejemplo, "1 de marzo de 2016" se convierte en una fecha, y "=1+2" se convierte en una fórmula. También se pueden inferir los formatos, por lo que "USD 100.15" se convierte en un número con formato de moneda. |
Ten en cuenta que solo debes usar responseDateTimeRenderOption si responseValueRenderOption no es FORMATTED_VALUE.
Los métodos de actualización única y por lotes se describen en las siguientes secciones. Para obtener más muestras de código de operaciones de escritura básicas, consulta Escritura básica.
Escribe valores en un solo rango
Para escribir datos en un solo rango, usa una solicitud spreadsheets.values.update:
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
El cuerpo de la solicitud de actualización debe ser un objeto ValueRange, aunque el único campo obligatorio es values. Si se especifica range, debe coincidir con el rango de la URL. En ValueRange, puedes especificar de forma opcional su majorDimension.
De forma predeterminada, se usa ROWS. Si se especifica COLUMNS, cada array interno se escribe en una columna en lugar de una fila.
Cuando se actualizan, se omiten los valores sin datos. Para borrar datos, usa una cadena vacía (""). También puedes borrar valores de varios rangos sin reemplazarlos con el método spreadsheets.values.batchClear.
Si usas metadatos del desarrollador, consulta la guía de metadatos del desarrollador para obtener información sobre cómo usar filtros de datos para leer, actualizar o borrar valores con los métodos spreadsheets.values.batchGetByDataFilter, spreadsheets.values.batchUpdateByDataFilter y spreadsheets.values.batchClearByDataFilter.
Escribe valores en varios rangos
Si deseas escribir varios rangos discontinuos, puedes usar una solicitud spreadsheets.values.batchUpdate:
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
El cuerpo de la solicitud de actualización por lotes debe ser un objeto BatchUpdateValuesRequest, que contiene un ValueInputOption y una lista de objetos ValueRange (uno para cada rango escrito). Cada objeto ValueRange especifica sus propios range, majorDimension y datos de entrada.
Valores agregados
Para agregar datos después de una tabla de datos en una hoja, usa una solicitud de spreadsheets.values.append:
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
El cuerpo de la solicitud de actualización debe ser un objeto ValueRange, aunque el único campo obligatorio es values. Si se especifica range, debe coincidir con el rango de la URL. En ValueRange, puedes especificar de forma opcional su majorDimension.
De forma predeterminada, se usa ROWS. Si se especifica COLUMNS, cada array interno se escribe en una columna en lugar de una fila.
El rango de entrada se usa para buscar datos existentes y encontrar una "tabla" dentro de ese rango. Los valores se agregan a la siguiente fila de la tabla, a partir de la primera columna. Por ejemplo, considera Sheet1 que se ve así:
| A | B | C | D | E | |
| 1 | x | y | z | ||
| 2 | x | y | z | ||
| 3 | |||||
| 4 | x | y | |||
| 5 | y | z | |||
| 6 | x | y | z | ||
| 7 |
Hay dos tablas en la hoja: A1:C2 y B4:D6. Los valores anexados comenzarían en B7 para todas las siguientes entradas de range:
Sheet1, ya que examinará todos los datos de la hoja y determinará que la tabla enB4:D6es la última.B4oC5:D5, porque ambos están en la tablaB4:D6B2:D4, ya que la última tabla del rango es la tablaB4:D6(a pesar de que también contiene la tablaA1:C2).A3:G10, ya que la última tabla del rango es la tablaB4:D6(a pesar de que comienza antes y termina después de ella).
Las siguientes entradas de range no comenzarían a escribir en B7:
A1comenzaría a escribir enA3, ya que se encuentra en la tablaA1:C2.E4comenzaría a escribir enE4, ya que no está en ninguna tabla. (A4también comenzaría a escribir enA4por los mismos motivos).
Además, puedes elegir si deseas reemplazar los datos existentes después de una tabla o insertar filas nuevas para los datos nuevos. De forma predeterminada, la entrada reemplaza los datos después de la tabla. Para escribir los datos nuevos en filas nuevas, usa InsertDataOption y especifica insertDataOption=INSERT_ROWS.
Para obtener más información sobre los límites de celdas y filas en Hojas de cálculo, consulta Archivos que se pueden guardar en Google Drive.