Google Spreadsheet API - найти первую пустую ячейку в столбце? - PullRequest
5 голосов
/ 29 мая 2009

Есть ли хороший способ получить первую пустую ячейку в столбце из сервиса электронных таблиц Google через Java?

Я знаю, что могу использовать:

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;
}

И просматривайте записи, но я бы предпочел не загружать весь столбец сразу, для моих пользователей это медленно и кажется плохим просто проходить весь столбец

Есть мысли?

Ответы [ 2 ]

1 голос
/ 11 января 2013

Этот небольшой фрагмент создаст функцию в электронной таблице Google с помощью скрипта Google Apps:

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;
}

Добавьте этот скрипт через редактор скриптов в вашу электронную таблицу, и функция emptySpace будет доступна по всей таблице, например: =emptySpace(A1:A7).

См. Пример файла, который я создал: пустое место

0 голосов
/ 27 декабря 2016

Вы можете сделать что-то вроде этого, используя редактор приложений Google, который открывается, нажав Сервис-> Редактор сценариев:

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;
    }
  }
}

Или вместо проверки журналов из View-> logs или ctrl + enter вы можете записать это значение в электронную таблицу, также используя:

sheet.getRange("S8").setValue(i+1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...