Google apps script GAS-基于列表获取二维数组中的某些列
我正试图通过按特定顺序获取特定列来使用Google sheet数据构建自定义数组。列/顺序在google工作表上设置。下面的内容是有效的,但我想让第11行的返回更加动态Google apps script GAS-基于列表获取二维数组中的某些列,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正试图通过按特定顺序获取特定列来使用Google sheet数据构建自定义数组。列/顺序在google工作表上设置。下面的内容是有效的,但我想让第11行的返回更加动态 function buildArray() { const s = SpreadsheetApp; const ss = s.getActiveSpreadsheet(); const sheet = ss.getSheetByName('Test Sheet'); const pasteSheet = ss.g
function buildArray() {
const s = SpreadsheetApp;
const ss = s.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Test Sheet');
const pasteSheet = ss.getSheetByName('Paste');
const data = sheet.getRange(1,1,10,10).getValues(); //update range
// const headers = pasteSheet.getRange(1,1,pasteSheet.getLastRow(),1).getValues().map(function(r){return r}).flat(Infinity); //list of headers needed in 1d array
const colNeed = [0,9,5,6,4,7]; //array index for column numbers
var customArray = data.map(function(r){
return [r[0], r[9], r[5], r[6], r[4], r[7]]; //Would like to make this more dynamic
})
debugger;
pasteSheet.getRange(1, 2, pasteSheet.getLastRow(), pasteSheet.getLastColumn()).clear();
pasteSheet.getRange(1, 2, customArray.length, customArray[0].length).setValues(customArray);
debugger;
}
我尝试过用r[colNeed.map(…)]替换r[0]和for循环,但没有成功
关于如何使这项工作的任何想法
这是最后一页的截图。
我只是复制/粘贴了第一列(A)中的标题名称,以确保正确的列被拉/粘贴。
首先尝试使用循环组合数据,然后返回。还添加了
customArray
顶部的标题
代码:
粘贴:
测试表:
执行buildArray
后粘贴工作表:
function buildArray() {
const s = SpreadsheetApp;
const ss = s.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Test Sheet');
const pasteSheet = ss.getSheetByName('Paste');
const data = sheet.getRange(1,1,10,10).getValues(); // update range
// get headers as single array (excluding blank cells)
// since last column of data can go beyond last row of column A
// headers can include blank cells if there is already data present
const headers = pasteSheet.getRange(1,1,pasteSheet.getLastRow(),1).getValues().flat().filter(Boolean);
// array index for column numbers
const colNeed = [0,9,5,6,4,7];
var customArray = data.map(function(r){
var output = [];
colNeed.forEach(function (col){
output.push(r[col]);
});
return output;
});
// Add headers at the first element of customArray
customArray.unshift(headers)
debugger;
pasteSheet.getRange(1, 2, pasteSheet.getLastRow(), pasteSheet.getLastColumn()).clear();
pasteSheet.getRange(1, 2, customArray.length, customArray[0].length).setValues(customArray);
debugger;
}