Javascript Google应用程序脚本。getLastColumn();特定行的名称?

Javascript Google应用程序脚本。getLastColumn();特定行的名称?,javascript,google-apps-script,Javascript,Google Apps Script,我基本上想得到电子表格第一行的最后一列。无论我尝试什么,它都会记录最后一列的整个电子表格的数据。我知道这很简单,但运气不好 我找遍了所有地方,但我尝试的一切都不起作用。非常感谢您的帮助。 非常感谢! Brandon没有内置函数来完成此操作,但您可以自己编写函数来完成此操作 例如,使用getRange()和getLastColumn()获取感兴趣的行,直到最后一个可能的数据列,然后使用getValues()获取该行中的所有单元格。最后,循环单元格数组(由getValues()返回),并跟踪最后一个

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

我找遍了所有地方,但我尝试的一切都不起作用。非常感谢您的帮助。 非常感谢!
Brandon

没有内置函数来完成此操作,但您可以自己编写函数来完成此操作

例如,使用getRange()和getLastColumn()获取感兴趣的行,直到最后一个可能的数据列,然后使用getValues()获取该行中的所有单元格。最后,循环单元格数组(由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
    }
  }
}
函数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];//获取二维数组的内部数组
var rowLength=rowData.length;
对于(变量i=0;i
使用getSheetAt(sheetNumber)从excel工作簿对象获取工作表;然后使用图纸对象getRow(0);然后使用cellIterator()可以迭代到行的最后一列。 使用XSSF工作簿的示例 XSSF工作簿wb=新XSSF工作簿(FileInputStream对象)//通过将excel文件路径传递给FileInputStream Sheet sh=wb.getSheetAt(0)或wb.getSheet(“工作表名称”)获得的对象;Row Row=sh.getRow(0);迭代器cit=row.cellIterator();细胞;而(cit.hasNext()){cell=cit.next();}


当您退出while循环时,“cell”变量中将有最后一个cell对象

请发布您的代码以真正测试最后一行,您还必须检查公式。因为如果公式返回一个空字符串,您将无法仅使用
getValues()
检测它,因此将假定最后一行错误。将
getMaxRows()
更改为
.getLastRow()
。。最大行数可以返回1000行,即使您只有几行数据。非常感谢。有没有办法让它忽略有公式的单元格?另外,是否要使用新发现的行数作为范围内的变量?基本上,我有一张数据表,标题行为1-40,下面是数据。我试图使用此数据创建图表,但由于标题行编号,无法使用lastcolumn()。现在您已经能够出色地找到最后一列数据,我想尝试在一个范围内使用它,这样图表总是只查看包含数据的范围,而忽略标题行。谢谢。在评论部分有很多问题。我猜数据需要分部分检索,然后组装成一个数组,然后使用该数组作为图表的数据源,而不是范围。但我只是胡乱猜测。对不起,问题太多了,我会调查的。再次感谢您的时间。您可以随时发布其他问题。尽量使它具体化。请随意查看我的配置文件,如果您愿意,请与我联系。请考虑格式化您的代码,现在几乎不可能读取它的格式。
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);
}