首页 > 解决方案 > 用不同的列创建一个新数组

问题描述

我想要一份包含工作表中几个选定列的报告。

选择将根据用户输入(如“1、4、7、12”)在报告中包括第 1、4、7 和 12 列。

或者输入可以是“2,3”以在报告中包含第 2 列和第 3 列。

//user input is saved in variable input "1,4,7,8" or "2,4" or "3,2,5"
//
var jobvals = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange().getValues();
var flds=input.split(",");
var tstr="";
for (i=1;i<jobvals.length;i++){
  for (s=0;s<flds.length;s++){
    //tstr+=jobvals[i][flds[s]]+","; //I can make a comma separated string for each row. But, I want an array for further processing
    //getting stuck here - how to make an array
  }
  tstr+="\n";
}

我想用选定的列创建一个新数组。结果数组中的列数会有所不同。而且,列的选择也会有所不同。

欣赏一些如何实现这一目标的想法。

标签: google-apps-scriptgoogle-sheets

解决方案


我得到了帮助

从应用程序脚本中的二维数组中提取选定列的最佳方法

Google Script GetRange 与基于列中的值的过滤器并仅选择某些列

解决方案

function extract_some_columns{
var jobvals = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange().getValues();

var new_array = getCols(jobvals,'['+input+']');

//new_array has only column 1,3,5 (as specified in the variable input = "1,3,5")

}



function getCols(arr,cols) {
  return arr.map(row =>
    row.filter((_,i) => cols.includes(++i)))
}



推荐阅读