簡體   English   中英

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

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

我基本上想獲取電子表格第一行的最后一列。 無論我嘗試什么,它都會用整個電子表格的數據記錄最后一列。 我知道這很簡單,但沒有運氣。

我已經到處搜索,但我嘗試的一切都不起作用。 任何幫助是極大的贊賞。 非常感謝! 布蘭登

以下是一些幫助您入門的代碼:

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

沒有內置函數可以執行此操作,但您可以編寫一個函數來自己執行此操作。

例如,使用 getRange() 和 getLastColumn() 獲取您感興趣的行直到最后一個可能的數據列,然后使用 getValues() 獲取該行中的所有單元格。 最后,循環遍歷單元格數組(由 getValues() 返回)並跟蹤具有值的最后一個索引。

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

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

Sheet 類支持 getLastColumn() 返回包含內容的最后一列。

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

使用 getSheetAt(sheetNumber) 從 excel 工作簿對象獲取工作表; 然后使用工作表對象 getRow(0); 然后使用 cellIterator() 您可以迭代到行的最后一列。 Example using XSSFWorkBook XSSFWorkBook wb=new XSSFWorkBook(FileInputStream object);//通過將excel文件路徑傳遞給FileInputStream Sheet sh=wb.getSheetAt(0) or wb.getSheet("sheet name"); 行行=sh.getRow(0); Iterator cit=row.cellIterator();Cell cell; while(cit.hasNext()) { cell=cit.next(); }

當您退出 while 循環時,您將在 'cell' 變量中擁有最后一個單元格對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM