java - sheets - API de hoja de cálculo de Google: encuentre la primera celda vacía en una columna.
programar en google sheets (2)
¿Hay una buena manera de obtener la primera celda vacía en una columna del servicio de hoja de cálculo de Google a través de Java?
Sé que puedo usar:
public CellFeed CheckColumn(int row, int col)
throws IOException, ServiceException {
CellQuery query = new CellQuery(cellFeedUrl);
query.setMinimumRow(row);
query.setMaximumRow(row);
query.setMinimumCol(col);
query.setMaximumCol(col);
query.setReturnEmpty(true);
CellFeed feed = service.query(query, CellFeed.class);
int cell_loc[];
for (CellEntry entry : feed.getEntries()) {
cell_loc=CheckIfEmpty(entry);
}
return cell_loc;
}
Y revise las entradas, pero prefiero no cargar toda la columna de una vez, es lenta para mis usuarios y parece malo simplemente recorrer toda la columna
¿Alguna idea?
Este pequeño fragmento creará una función en Google Spreadsheet con Google Apps Script:
function emptySpace(array) {
// set counter
var counter = 0;
// itterate through values
for (i in array){
if (array[i].length > 1) {
throw ("Only single column of data");
} else {
if(array[i][0] != "") {
counter++;
} else {
break;
}
}
}
// return value + 1
return counter + 1;
}
Agregue este script, a través del editor de scripts, a su hoja de cálculo y la función emptySpace está disponible en toda la hoja de trabajo, como por ejemplo: =emptySpace(A1:A7)
.
Ver archivo de ejemplo que he creado: espacio vacío
Puede hacer algo como esto usando el editor de Google Appscript que se abre al hacer clic en Herramientas-> editor de scripts:
function myFunction()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME"); //get your active sheet for various operations
var data = sheet.getDataRange().getValues(); //whole sheet as 2D array
for(var i=0; i<data.length; i++)
{
if(data[i][YOUR_COLUMN].trim() == "") //trim() is used to remove blank spaces
{
Logger.log(i+1); //Returns empty first empty cell''s row #
break;
}
}
}
O bien, en lugar de verificar los registros de Ver-> registros o ctrl + enter, puede escribir ese valor en la hoja de cálculo usando también:
sheet.getRange("S8").setValue(i+1);