如何在结果中选择特定范围

问题描述 投票:0回答:1

是否可以根据您的偏好检索数据?例如,我只需要显示第1、5、8、11和23列。

function showInputBox(){

 var ui = SpreadsheetApp.getUi();
 var input = ui.prompt("Please enter your rep name.",ui.ButtonSet.OK_CANCEL);

if(input.getSelectedButton() == ui.Button.OK){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Monitoring (Database)");
  var data = ws.getRange("A2:X" + ws.getLastRow()).getValues();
  var userSelectedRep = input.getResponseText();
  var newData = data.filter(function(r){ return r[23] == userSelectedRep});
  var newWs = ss.insertSheet(userSelectedRep);
  newWs.getRange(2, 1, newData.length, newData[0].length).setValues(newData);


}

我尝试使用 getRangeList,但它不起作用。我不确定这是否可能。我只是一个新手,试图将脚本添加到我的 Google 表格数据中。

google-sheets google-apps-script
1个回答
0
投票

你不需要

getRangeList
。您可以通过仅提取所需的列(1、5、8、11 和 23)来手动过滤列。

function showInputBox() {
  var ui = SpreadsheetApp.getUi();
  var input = ui.prompt("Please enter your rep name.", ui.ButtonSet.OK_CANCEL);

  if (input.getSelectedButton() == ui.Button.OK) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ws = ss.getSheetByName("Monitoring (Database)");
    var data = ws.getRange("A2:X" + ws.getLastRow()).getValues();
    var userSelectedRep = input.getResponseText();

    // Filter the data by the rep name in column 24 (23 in zero-index)
    var newData = data.filter(function (r) { return r[23] == userSelectedRep });

    // Extract only columns 1, 5, 8, 11, and 23
    var selectedColumns = newData.map(function (r) {
      return [r[0], r[4], r[7], r[10], r[22]];
    });

    // Create a new sheet and set the selected data accordingly
    var newWs = ss.insertSheet(userSelectedRep);
    newWs.getRange(2, 1, selectedColumns.length, selectedColumns[0].length).setValues(selectedColumns);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.