google-apps-script - 用不同的列创建一个新数组
问题描述
我想要一份包含工作表中几个选定列的报告。
选择将根据用户输入(如“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 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)))
}
推荐阅读
- sql - 我已经尝试过 MAX 和 Group By 但仍然得到重复输入而不是最新结果
- r - 为具有矢量化输入的函数添加条件
- three.js - 三.js Gltf 加载器返回错误
- c++ - 抛出异常...访问违反读取位置
- kotlin - 在 Kotlin 中将嵌套数据类转换为单级 Map
- kubernetes - Kubernetes Autoscaler:在可以缩减规模时部署没有停机时间?
- javascript - 将 img src 从 JavaScript 正确添加到 html
- android - AppCompatTextView autoSizeTextType 不起作用
- node.js - 隐式形状不能是小数
- python - 如何使用 sys.modules 和 mock.patch 进行模拟(Python 对静态函数的干扰)