【问题标题】:Google Sheets Script getLastRow() not returning all valuesGoogle表格脚本getLastRow()不返回所有值
【发布时间】:2018-05-18 11:15:42
【问题描述】:

我在第一列中有电子邮件地址。当我尝试获取此列的最后一行时,该函数仅返回前两个值。这是工作表的链接:https://docs.google.com/spreadsheets/d/1piGCiWMcUKUWagIJSZ_0SxxuNG3tcEcrx-fKnMDOIlQ/edit?usp=sharing

下面是脚本函数:

function myFunction() {
  var rangeLastRow = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1).getLastRow(); 
  var emails = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1,rangeLastRow).getValues();
  Logger.log(emails);
}

它不应该返回第一列中的所有电子邮件地址吗? 它只返回前两个电子邮件地址。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这个修改怎么样?

    修改点:

    • getRange(2, 1).getLastRow() 表示检索“a2”范围的最后一行。所以结果是2。
      • 要检索表格的最后一行,请使用SpreadsheetApp.getActive().getSheetByName('Sheet1').getLastRow()
      • getRange(row, column, numRows) 的第三个参数是numRows。当您要检索“a2:a6”的数据时,numRowsrangeLastRow - 1
        • 由于上述原因,getRange(2, 1, 2).getValues() 仅检索到 2 个单元格。
    • SpreadsheetApp.getActive().getSheetByName('Sheet1') 可以通过导入变量来使用。

    上面反映的修改后的脚本如下。

    修改后的脚本:

    var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
    var rangeLastRow = sheet.getLastRow(); 
    var emails = sheet.getRange(2, 1, rangeLastRow - 1).getValues();
    Logger.log(emails);
    

    参考资料:

    【讨论】:

      【解决方案2】:

      不,它工作正常。 range.getLastRow() 返回范围的最后一行的绝对索引。你的线路

      var rangeLastRow = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1).getLastRow(); 
      

      返回您在getRange(2, 1) 中指定的单元格A2 的行索引,因此您对range.getValues() 的调用将获取范围A2:A3 的值。即您对range.getLastRow() 的调用返回2,因为您的范围是(第2 行,第1 列),所以您对range.getValues() 的调用正在查看范围(第2 行,第1 列,第2 行)

      您想要工作表中的最后一行数据,您可以使用sheet.getLastRow() 获得。事实上,为什么不完全取消 var rangelastRow 呢?以下为您提供您所追求的结果:

      function myFunction() {
        var ss = SpreadsheetApp.getActive().getSheetByName('Sheet1');
        var emails = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1,ss.getLastRow() - 1).getValues();
        Logger.log(emails);
      }
      

      请注意,您实际上希望使用 getLastRow() - 1 设置范围中的行数,因为您的范围从第 2 行开始,而不是第 1 行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-15
        相关资源
        最近更新 更多