我想根据所选单元格获取电子表格行的值

I want to get the values of a row of a spreadsheet based on the selected cell

我需要根据我选择的单元格获取电子表格中一行的所有值。 示例:我选择了单元格 F1。现在我想要该行中的所有值(例如 F1、F2、F3、F4、F5)。

我尝试了什么:

  var selection = SpreadsheetApp.getActiveSheet().getSelection()

  var val1 = selection.getValue()
  var val2 = values.getNextDataRange(SpreadsheetApp.Direction.NEXT).getValue()
  var val3 = values.getNextDataRange(SpreadsheetApp.Direction.NEXT).getValue()
  ...

然后我想我可以选择我感兴趣的整行,这样我就有了一个列表,其中包含我可以使用 xy[0]、xy[1]、xy[2]...但这并不成功。

  var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getSelection().getActiveRange();
  
  var val1 = values[0]
  var val2 = values[1]
  ...
  var values = SpreadsheetApp.getActive().getActiveRange().getA1Notation();
  var val1 = values[0]
  var val2 = values[1]
  ...

我最后的想法是只获取所选单元格的位置,例如F1。因此我可以直接获取所有值:

  var value1 = SpreadsheetApp.getActiveSheet().getRange(5, 0).getValue();
  var value1 = SpreadsheetApp.getActiveSheet().getRange(5, 1).getValue();
  var value1 = SpreadsheetApp.getActiveSheet().getRange(5, 2).getValue();
  ...

不幸的是,到目前为止没有任何效果。有人能解决我的问题吗?

获取选定行的数组

function selectRowsBasedOnCriteria() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Your Sheet Name');//enter sheet name
  const sr=2;
  const sc=1;
  const rg=sh.getRange(sr,sc,sh.getLastRow()-sr+1,sh.getLastColumn()-sc+1);
  const vs=rg.getValues();
  let oA=[];
  vs.forEach(function(r,i){
    if(r[4]>10) {//selection criteria you chose whatever you want
      oA.push(r);//save selected row
    }
  });
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(oA.join('<br />')).setWidth(800), "Rows");//just a way of displaying the selected rows
  //const osh=ss.getSheetByName('output');//to display in another sheet
  //osh.getRange(1,1,oA.length,oA[0].length).setValues();//display in another sheet
  return oA;//this is an array of selected rows
}

假设您实际上想要检索所选 row 中的值,而不是 column(因此,如果选择 F1,您想要检索 A1B1C1等,而不是F1F2F3等,你可以这样做:

  • 获取所选单元格的行索引,通过getCurrentCell() and getRow()
  • 获取对应于getRange(row, column, numRows, numColumns) (specifying that the first row is the current row index, which was retrieved in previous step, and that the last column refers to the last column with content (getLastColumn()), and getValues()行的值,其中returns一个对应于指定范围的二维数组。此二维数组的第一个元素是一个简单数组,其中包含行中的所有值。

代码示例:

function getRowValues() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rowIndex = sheet.getCurrentCell().getRow();
  var rowValues = sheet.getRange(rowIndex, 1, 1, sheet.getLastColumn()).getValues()[0];
  return rowValues;
}