首页 > 解决方案 > 如何使用 Google App Script 在 Google 电子表格中获取 E 列的最后一行

问题描述

我是 GS 的新人,我想获得 E 列的最后一行。然后使用最后一行进行循环以获取 E 列中的所有数据。

输入电子表格

输入电子表格

我想要的输出。

我想要的输出。

标签: google-apps-scriptgoogle-sheets

解决方案


要获取包含E 列中所有非空值的数组:

  const ss = SpreadsheetApp.getActive();
  const values = ss.getRange('Sheet1!E1:E')
    .getValues()
    .flat()
    .filter(String);

要获取 E 列中具有可见内容的最后一行的行号,并遍历 E 列中的值直到该行,请使用以下命令:

function iterateColumnE() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange('E1:E' + getLastRow_(sheet, 5));
  range.getValues().forEach(row => {
    console.log(row[0]);
  });
}

/**
* Gets the position of the last row that has visible content in a column of the sheet.
* When column is undefined, returns the last row that has visible content in any column.
*
* @param {Sheet} sheet A sheet in a spreadsheet.
* @param {Number} columnNumber Optional. The 1-indexed position of a column in the sheet.
* @return {Number} The 1-indexed row number of the last row that has visible content.
*/
function getLastRow_(sheet, columnNumber) {
  // version 1.5, written by --Hyde, 4 April 2021
  const values = (
    columnNumber
      ? sheet.getRange(1, columnNumber, sheet.getLastRow() || 1, 1)
      : sheet.getDataRange()
  ).getDisplayValues();
  let row = values.length - 1;
  while (row && !values[row].join('')) row--;
  return row + 1;
}

推荐阅读