【问题标题】:I want to get the values of a row of a spreadsheet based on the selected cell我想根据所选单元格获取电子表格行的值
【发布时间】:2020-07-01 19:54:37
【问题描述】:

我需要根据我选择的单元格获取电子表格行的所有值。 示例:我选择了单元格 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();
  ...

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

【问题讨论】:

    标签: google-apps-script google-sheets return-value google-apps-script-editor getvalue


    【解决方案1】:

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

    代码示例:

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

    【讨论】:

      【解决方案2】:

      获取选定行的数组

      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
      }
      

      【讨论】:

      • 非常感谢,因为我现在得到了数组中一行的值,这已经很有帮助了!但是我有几个问题:我在我的脚本编辑器中实现了您的代码,并且我得到了所选值的显示(非常好!)。我想,由于 oA 现在是一个包含值的数组,我可以通过以下方式获取值:``` var value1 = oA[1] var value2 = oA[2] ... ``` 但这不起作用。如何获得单个值?我还有一个问题。当有一列没有条目时,它似乎不起作用。在那种情况下,我没有得到所选值的显示。有什么技巧吗?
      • 我想 Iamblichus 的回答对我来说已经足够了,不过还是谢谢!
      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多