Sei sulla pagina 1di 9

LECTURA Y ESCRITURA DE VALORES DE CELDAS

Las hojas de cálculo pueden tener varias hojas, y cada hoja puede tener cualquier
cantidad de filas y columnas. Una celda es una ubicación en la intersección de una fila y
columna determinadas, y puede incluir un valor de datos. La Google Sheets API ofrece
la colección spreadsheets.values para poder escribir y leer valores fácilmente.
En esta página, se describe la información básica para usar la
colección spreadsheets.values. Si necesitas actualizar el formato u otras propiedades de
una hoja, deberás usar la colección spreadsheets, que se describe en Actualización de
hojas de cálculo.
Métodos
La colección spreadsheets.values proporciona los siguientes métodos para leer y escribir
valores. Cada uno se especializa en una tarea específica:

Acceso a
Lectura Escritura
rangos

Un rango spreadsheets.values.get spreadsheets.values.update

Varios rangos spreadsheets.values.batchGet spreadsheets.values.batchUpdate

Anexos spreadsheets.values.append

Por lo general, es recomendable combinar varias lecturas o actualizaciones con los


métodos batchGet y batchUpdate (respectivamente), ya que esto mejorará la eficacia.
En las páginas de muestra Lectura básica y Escritura básica, encontrarás ejemplos de
cada uno de estos métodos.
Lectura
Para leer los datos de una hoja, necesitarás el ID de la hoja de cálculo y la notación A1
de los rangos. Para obtener más información sobre la notación A1 y los ID de las hojas
de cálculo, consulta Conceptos clave de Google Sheets API. Tres parámetros opcionales
son los encargados de controlar el formato de la salida:

Parámetro de formato Valor predeterminado

majorDimension ROWS

valueRenderOption FORMATTED_VALUE

dateTimeRenderOption SERIAL_NUMBER

Ten en cuenta que dateTimeRenderOption solo se usa si valueRenderOption no


es FORMATTED_VALUE.
A continuación, se describen los métodos get para un rango o varios rangos. Para ver
ejemplos de operaciones básicas de lectura, consulta la página Lectura básica con
recetas.
Leer un solo rango
Para leer un solo rango de datos en una hoja de cálculo, usa una
solicitud spreadsheets.values.get:
Protocolo
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheet_id/values/range
PHP
$result = $service->spreadsheets_values->get($spreadsheetId, $range)
PYTHON
result = service.spreadsheets().values().get(
    spreadsheetId=spreadsheet_id, range=range_name).execute()
Esta solicitud devuelve un objeto ValueRange.
Leer varios rangos
Para leer varios rangos no contiguos, usa spreadsheets.values.batchGet, que te permite
especificar cualquier cantidad de rangos que quieras recuperar:
PROTOCOL
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheet_id/values:batchGet?
ranges=range1&ranges=range2
PHP
$ranges = array(
//Range names ...
);
$params = array(
'ranges' => $ranges
);
$result = $service->spreadsheets_values->batchGet($spreadsheetId, $params);
PYTHON
range_names = [
  # Range names ...
]
result = service.spreadsheets().values().batchGet(
    spreadsheetId=spreadsheet_id, ranges=range_names).execute()

Esta solicitud devuelve un objeto BatchGetValueResponse, que contiene el ID de la


hoja de cálculo y una lista de objetos ValueRange.
Escritura
Para escribir en una hoja, necesitarás el ID de la hoja de cálculo, los rangos en
notación A1 y los datos que quieras escribir ordenados en un objeto de cuerpo de
solicitud adecuado. Para obtener más información sobre la notación A1 y los ID de las
hojas de cálculo, consulta Conceptos clave de Google Sheets API.
Para las actualizaciones, es necesario un parámetro ValueInputOption válido (para una
sola actualización, es un parámetro de consulta obligatorio; para actualizaciones por
lotes, es un parámetro obligatorio en el cuerpo de la solicitud). ValueInputOption
controla si los string de entrada se analizan o no, como se describe en la siguiente tabla:

ValueInputOption Descripción

RAW La entrada no se analiza y simplemente se inserta como un


string. Por lo tanto, la entrada “=1+2” coloca el string “=1+2”
en la celda y no una fórmula. Los valores que no sean string,
como elementos booleanos o números, siempre se gestionan
como RAW.

USER_ENTERE La entrada se analiza exactamente como si se hubiese


D ingresado en la IU de Google Sheets. Por lo tanto,
“Mar 1 2016” se convierte en una fecha y “=1+2” se convierte
en una fórmula. Los formatos también se pueden inferir. De
esta forma, “$100.15” se convierte en un número con formato
de moneda.

A continuación, se describen los métodos para actualizar uno o varios rangos. Para ver
ejemplos de operaciones básicas de escritura, consulta la página Escritura básica con
recetas.
Escribir en un solo rango
Para escribir datos en un solo rango, usa la solicitud spreadsheets.values.update:
PROTOCOL
PUT
https://sheets.googleapis.com/v4/spreadsheets/spreadsheet_id/values/
range?
valueInputOption=value_input_option
{
"values": [
[
// Cell values ...
],
// Additional rows ...
]
}

PHP
$values = array(
    array(
        // Cell values ...
    ),
    // Additional rows ...
);
$body = new Google_Service_Sheets_ValueRange(array(
  'values' => $values
));
$params = array(
  'valueInputOption' => $valueInputOption
);
$result = $service->spreadsheets_values->update($spreadsheetId,
$range,
    $body, $params);

PYTHON
values = [
    [
        # Cell values ...
    ],
    # Additional rows ...
]
body = {
  'values': values
}
result = service.spreadsheets().values().update(
    spreadsheetId=spreadsheet_id, range=range_name,
    valueInputOption=value_input_option, body=body).execute()

El cuerpo de la solicitud de actualización debe ser un objeto ValueRange, pero el único


campo obligatorio es values. Si se especifica range, debe coincidir con el rango de la
URL. En ValueRange, puedes especificar su majorDimension si lo deseas. Se usa
ROWS de forma predeterminada. Si se indica COLUMNS, cada array interior se escribe
en una columna en lugar de en una fila.
Durante la actualización, se omiten los valores sin datos. Para borrar datos, utiliza un
string vacío ("").
*Un parámetro de rango puede especificar varias celdas (por ejemplo, A1:D5) o una
sola celda (por ejemplo, A1). Si especifica varias celdas, los datos de entrada deben
coincidir con el rango. Si especifica una sola celda, los datos de entrada comienzan en
dicha coordenada, y se extienden a cualquier fila o columna.
Escribir en varios rangos
Si quieres escribir en varios rangos no contiguos, puedes usar una
solicitud spreadsheets.values.batchUpdate:
PROTOCOL
POST
https://sheets.googleapis.com/v4/spreadsheets/spreadsheet_id/values:b
atchUpdate
{

"valueInputOption": "value_input_option",

"data": [

"range": "range",

"values" : [

// Cell values ...

],

// Additional rows ...

},

// Additional ranges to update ...

PHP
$values = array(
    array(
        // Cell values ...
    ),
    // Additional rows ...
);
$data = array();
$data[] = new Google_Service_Sheets_ValueRange(array(
  'range' => $range,
  'values' => $values
));
// Additional ranges to update ...

$body = new Google_Service_Sheets_BatchUpdateValuesRequest(array(


  'valueInputOption' => $valueInputOption,
  'data' => $data
));
$result = $service->spreadsheets_values->batchUpdate($spreadsheetId,
$body);

PYTHON
values = [
    [
        # Cell values
    ],
    # Additional rows
]
data = [
    {
        'range': range_name,
        'values': values
    },
    # Additional ranges to update ...
]
body = {
  'valueInputOption': value_input_option,
  'data': data
}
result = service.spreadsheets().values().batchUpdate(
    spreadsheetId=spreadsheet_id, body=body).execute()

El cuerpo de la solicitud batchUpdate debe ser un objeto BatchUpdateValuesRequest,


que contenga un valor ValueInputOption y una lista de objetos ValueRange (uno para
cada rango que se debe escribir). Cada objeto ValueRange especifica sus propios
valores de range y majorDimension, y los datos que se insertarán.
Anexar valores
Para anexar datos después de una tabla de datos en una hoja, utiliza una
solicitud spreadsheets.values.append:
PROTOCOL
POST
https://sheets.googleapis.com/v4/spreadsheets/spreadsheet_id/values/r
ange:append?

valueInputOption=valueInputOption

"values": [

// Cell values ...

],

// Additional rows ...

}
PHP
$values = array(
    array(
        // Cell values ...
    ),
    // Additional rows ...
);
$body = new Google_Service_Sheets_ValueRange(array(
  'values' => $values
));
$params = array(
  'valueInputOption' => $valueInputOption
);
$result = $service->spreadsheets_values->append($spreadsheetId,
$range,
    $body, $params);

PYTHON
values = [
    [
        # Cell values ...
    ],
    # Additional rows ...
]
body = {
  'values': values
}
result = service.spreadsheets().values().append(
    spreadsheetId=spreadsheet_id, range=range_name,
    valueInputOption=value_input_option, body=body).execute()

El cuerpo de la solicitud de actualización debe ser un objeto ValueRange, pero el único


campo obligatorio es values. Si se especifica range, debe coincidir con el rango de la
URL. En ValueRange, puedes especificar su majorDimension si lo deseas. Se usa
ROWS de forma predeterminada. Si se indica COLUMNS, cada array interior se escribe
en una columna en lugar de en una fila.
*El parámetro majorDimension no controla si los datos se agregan como filas o
columnas a la tabla. Los datos siempre se agregarán a las filas posteriores. El parámetro
solo controla cómo se leen los datos de entrada.
El rango de entrada se utiliza para buscar datos existentes y una “tabla” dentro del
rango. Los valores se anexan a la fila siguiente de la tabla, a partir de la primera
columna de la tabla. Por ejemplo, considera una hoja Sheet1así:

A B C D E
1 x y z

2 x y z

4 x y

5 y z

6 x y z

En la hoja, hay dos tablas: A1:C2 y B4:D6. Se empezará a anexar valores a partir


de B7 para los siguientes valores de range:
 Sheet1, porque se examinarán todos los datos de la hoja y se determinará que la
tabla B4:D6 es la última tabla.
 B4 o C5:D5, porque ambos se encuentran en la tabla B4:D6.
 B2:D4, porque la última tabla del rango es la tabla B4:D6 (aunque también
contenga la tabla A1:C2).
 A3:G10, porque la última tabla del rango es la tabla B4:D6 (aunque empiece
antes y termine después).
Los siguientes valores de range no empezarán a escribir en B7:
 A1 empezará a escribir en A3 porque ya se encuentra en la tabla A1:C2.
 E4 empezará a escribir en E4 porque no está en ninguna tabla (A4 también
empezará a escribir en A4por la misma razón).
Además, puedes elegir sobrescribir datos existentes después de una tabla o insertar filas
nuevas para los datos nuevos. De forma predeterminada, la entrada sobrescribe los datos
después de la tabla. Para escribir los datos nuevos en filas nuevas,
especifica insertDataOption=INSERT_ROWS.

Google Sheets API v4 - Method: spreadsheets.values.append

¿Cuál es la sintaxis correcta para el método spreadsheets.values.append de Google


Sheets API v4 para Google Apps Script?
Intenté el siguiente código, pero está dando un error: Se recibió una carga JSON no
válida.
function appendRow() {
Sheets.Spreadsheets.Values.append("SpreadsheetID", "Sheet1!A:A",
"USER_ENTERED", { "values": [[new Date()]] } );
}
Cambié el código a esto:
 { "range": "Sheet1!A1:D1", "majorDimension": "ROWS", "values": [ ["Door", "$15",
"2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ] };
pero da error: No se encontró la entidad solicitada. Aunque toda la información para
range y sheetId es correcta.
Parece que no puede encontrar la entidad ("USER_ENTERED") en el rango dado de tu
hoja de cálculo. ¿Estás seguro de que quieres este método, para empezar? Es para
encontrar algún valor en la hoja y agregar datos debajo de ella.
¿Qué tal esta muestra? Sheets.Spreadsheets.Values.append () de los servicios avanzados
de Google se usa como Sheets.Spreadsheets.Values.append (resource, spreadsheetId,
range, optionalArgs). Así que la muestra utiliza sus parámetros es la siguiente.
Respuesta:
var resource = {
"majorDimension": "ROWS",
"values": [[new Date()]]
}
var spreadsheetId = "### SpreadsheetID ###";
var range = "Sheet1!A:A";
var optionalArgs = {valueInputOption: "USER_ENTERED"};
Sheets.Spreadsheets.Values.append(resource, spreadsheetId, range, optionalArgs);
Muchas gracias otra vez. Funcionó bien

Potrebbero piacerti anche