Google Spreadsheet API - 查找列中的第一个空单元格?

时间:2009-05-29 04:05:31

标签: java google-apps-script google-sheets

有没有一种方法可以通过Java从Google的电子表格服务中获取第一个空单元格?

我知道我可以使用:

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 个答案:

答案 0 :(得分:1)

这个小小的代码片段将使用Google Apps脚本在Google电子表格中创建一个功能:

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)

请参阅我创建的示例文件:empty space

答案 1 :(得分:0)

您可以使用google appscript编辑器执行此类操作,该编辑器通过单击工具 - >脚本编辑器打开:

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-&gt;中检查日志。 log或ctrl + enter,您也可以使用以下方法在电子表格上写下该值:

sheet.getRange("S8").setValue(i+1);