Google Apps 脚本 .getLastColumn();特定行的?

Google Apps Script .getLastColumn(); of a specific row?

我基本上想获取电子表格第一行的最后一列。无论我尝试什么,它都会记录最后一列整个电子表格的数据。我知道这很简单,但运气不好。

我搜索了所有地方,但我尝试的所有方法都不起作用。任何帮助是极大的赞赏。 非常感谢! 布兰登

没有内置函数可以执行此操作,但您可以自己编写一个函数来执行此操作。

例如,使用 getRange() 和 getLastColumn() 获取您感兴趣的行直到最后一个可能的数据列,然后使用 getValues() 获取该行中的所有单元格。最后,遍历单元格数组(由 getValues() 返回)并跟踪最后一个具有值的索引。

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange()

https://developers.google.com/apps-script/reference/spreadsheet/range#getValues()

这里有一些代码可以帮助您入门:

function getLastNonEmptyCellInRow() {
  var rowToCheck = 2;

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var maxColumns = sheet.getLastRow();

  var rowData = sheet.getRange(rowToCheck, 1, 1, maxColumns).getValues();
  rowData = rowData[0]; //Get inner array of two dimensional array

  var rowLength = rowData.length;

  for (var i = 0; i < rowLength; i++) {
    var thisCellContents = rowData[i];

    Logger.log('thisCellContents: ' + thisCellContents);

    if (thisCellContents === "") {
      Logger.log(i);
      return i + 1;  //Pass the count plus one, which is the last column with data
    }
  }
}
function getLastColNum(rowNum)
{
  // Get the values of the row's (unbounded by column number) range.
  var vals =
        SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
        .getRange(rowNum +":"+ rowNum)
        .getValues()[0],

      lastColNum = vals.length
  ;

  // Decrement while popping off any trailing empty text ("") cells.
  while(!vals.pop())
  { --lastColNum; }


  return(lastColNum);
}

从 excel 工作簿对象获取 sheet 使用 getSheetAt(sheetNumber);然后使用 sheet object getRow(0);然后使用 cellIterator() 可以迭代到行的最后一列。 使用 XSSFWorkBook 的示例 XSSFWorkBook wb=new XSSFWorkBook(FileInputStream object);//将excel文件路径传给FileInputStream得到的对象Sheet sh=wb.getSheetAt(0) or wb.getSheet("sheet name");行行=sh.getRow(0);迭代器 cit=row.cellIterator();单元格; while(cit.hasNext()) { 细胞=cit.next(); }

当您退出 while 循环时,您将在 'cell' 变量中拥有最后一个单元格对象

Sheet class 支持 getLastColumn() 到 return 包含内容的最后一列。

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastColumn()

范围有一个 getLastColumn() 函数,但它是范围的最后一列,不一定是包含数据的最后一列。

https://developers.google.com/apps-script/reference/spreadsheet/range#getLastColumn()

要获取包含内容的最后一列,遍历最后 Sheet 列的行回到非空单元格。

   /**
   * Get last column with content in row
   * @param {Sheet} sheet
   * @param {integer} row
   * @return {integer} last column with content, 0 if none found
   */
   function getLatColInRow(sheet, row = 1) {
       let lastColumn = sheet.getLastColumn();
       let values = sheet.getRange(row,1,1,lastColumn).getValues()[0];
       while ((values[lastColumn-1] == "") && (lastColumn>0)) {
           lastColumn --;
       }
       return lastColumn;
   }