在GoogleSheets中解析一个表,然后将所有匹配的行数据存储在一个我可以从中提取信息的数组中(GAS/JavaScript)

在GoogleSheets中解析一个表,然后将所有匹配的行数据存储在一个我可以从中提取信息的数组中(GAS/JavaScript),javascript,database,for-loop,parsing,google-apps-script,Javascript,Database,For Loop,Parsing,Google Apps Script,对不起,如果我的代码很混乱,我是新的编码。到目前为止,我一直能使事情顺利进行 我想解析我的数据库,从所有符合条件的行中获取信息,并将这些信息存储在一个数组中,每一组数据都在一个新的数组级别上。所以我可以在以后的报告页面上打印这些信息 问题是: 当我调试这段代码时,“newArray”变量的“objects”数是正确的,因为缺少适当的编码语言,但是每个变量的内容都是“function()”,其中没有任何实际数据。因此,有关我如何在for循环中推送和/或获取数据的某些内容无法正常工作,我不太清楚原因

对不起,如果我的代码很混乱,我是新的编码。到目前为止,我一直能使事情顺利进行

我想解析我的数据库,从所有符合条件的行中获取信息,并将这些信息存储在一个数组中,每一组数据都在一个新的数组级别上。所以我可以在以后的报告页面上打印这些信息

问题是:

当我调试这段代码时,“newArray”变量的“objects”数是正确的,因为缺少适当的编码语言,但是每个变量的内容都是“function()”,其中没有任何实际数据。因此,有关我如何在for循环中推送和/或获取数据的某些内容无法正常工作,我不太清楚原因

function kanbanView() {

var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//  var activeSheet = activeSpreadsheet.getActiveSheet();
var activeSheet = activeSpreadsheet.getSheetByName("ACTIVE");
var activeRange = activeSpreadsheet.getActiveRange();
//  var activeCell = activeSpreadsheet.getActiveCell();
var activeCell = activeSheet.getRange(19, 10);
// ^^ remove later, mock cell for debugger.
var activeCellRow = activeCell.getRow();
var activeCellColumn = activeCell.getColumn();
var lastColumn = 17;
var firstColumn = 1;
var lastRow = activeSheet.getLastRow();
var activeCellValue = activeCell.getValue();
var findCriteria = activeCellValue;
var foundCriteria = 0;
var contentRange = activeSheet.getRange(1, 1, 5000, 17);
var contentRangeValues = contentRange.getValues();
var contentRangeFormats = contentRange.getFontColors();
var sourceColumn = 10;

//-------------------------------------------Parsing--------------------------------------------------

var foundValues = [];
var newArray = [];
var foundRow;

var iName;
var iStatus;
var iRating;
var iAction;
var iPosition;
var iLocation;
var iClient;

for (var i = 0; i < lastRow; i++) {
if (activeColumnRangeValues[i][0] == findCriteria) {
foundRow = i;

iName = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 7).getValue;
iStatus = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 5).getValue;
iRating = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 4).getValue;
iAction = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 6).getValue;
iPosition = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 8).getValue;
iLocation = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 9).getValue;
iClient = activeSpreadsheet.getSheetByName("ACTIVE").getRange(foundRow, 10).getValue;

newArray.push([iName, iStatus, iRating, iAction, iPosition, iLocation, iClient,
]);
foundValues.push(foundRow + 1);
}
}



函数看板视图(){
var activeSpreadsheet=SpreadsheetApp.getActiveSpreadsheet();
//var activeSheet=activeSpreadsheet.getActiveSheet();
var activeSheet=activeSpreadsheet.getSheetByName(“ACTIVE”);
var activeRange=activeSpreadsheet.getActiveRange();
//var activeCell=activeSpreadsheet.getActiveCell();
var activeCell=activeSheet.getRange(19,10);
//^^稍后删除调试器的模拟单元格。
var activeCellRow=activeCell.getRow();
var activeCellColumn=activeCell.getColumn();
var lastColumn=17;
var firstColumn=1;
var lastRow=activeSheet.getLastRow();
var activeCellValue=activeCell.getValue();
var findCriteria=activeCellValue;
var-foundCriteria=0;
var contentRange=activeSheet.getRange(1,1,5000,17);
var contentRangeValues=contentRange.getValues();
var contentRangeFormats=contentRange.getFontColors();
var sourceColumn=10;
//-------------------------------------------解析--------------------------------------------------
var-foundValues=[];
var newArray=[];
var foundRow;
瓦里南;
var iStatus;
变异激发;
变异;
变位;
变异;
客户价值;
对于(变量i=0;i
我想这正是你想要的:

function kanbanView() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("ACTIVE");
  const vA = sh.getRange(1,1,sh.getLastRow(),17).getValues();
  const findCriteria = sh.getRange(19, 10).getValue();
  const newArray=[];
  const foundValues=[];
  vA.forEach((r,i)=>{
    if(r[0]==findCriteria) {
      newArray.push([r[6],r[4],r[3],r[5],r[7],r[8],r[9]]);
      foundValues.push(i+1); 
    }
     
  });
  console.log(JSON.stringify(newArray));
  console.log(JSON.stringify(foundValues));
} 
这是我的数据:

可乐 可乐 可乐 可乐 可乐 可乐6 可乐 可乐 可乐 可乐 COL11 可乐 COL13 可乐 可乐15 COL16 COL17 COL18 COL19 可乐 20 29 23 28 9 22 1. 23 2. 5. 20 4. 27 7. 5. 24 22 17 26 4. 2. 18 17 18 29 22 25 26 11 10 22 17 14 5. 18 28 27 7. 13 25 4. 18 0 20 25 25 24 12 23 7. 5. 1. 26 13 4. 10 10 4. 27 18 27 23 28 23 9 29 14 25 26 8. 9 25 6. 12 14 0 29 21 29 2. 21 1. 25 13 10 4. 3. 26 21 10 7. 15 5. 29 4. 26 8. 23 13 17 19 7. 22 16 7. 27 15 2. 27 19 29 12 9 29 11 21 6. 0 28 9 25 12 5. 23 7. 28 6. 1. 5. 4. 26 6. 6. 12 27 10 21 0 14 27 17 22 8. 28 18 18 7. 13 6. 18 21 13 27 28 10 29 4. 13 10 11 17 6. 8. 17 18 2. 10 6. 3. 13 1. 13 16 2. 7. 11 22 11 8. 8. 20 27 10 19 5. 29 23 12 18 16 1. 19 1. 5. 24 27 18 10 4. 1. 28 5. 3. 17 14 16 10 3. 20 28 28 4. 8. 26 16 22 24 28 12 27 12 13 17 22 8. 12 22 8. 21 29 22 18 14 15 2. 7. 8. 10 9 14 15 16 27 29 5. 11 10 8. 7. 10 0 6. 2. 8. 22 19 21 0 0 10 27 28 23 12 3. 23 21 26 16 28 17 5. 19 13 6. 0 3. 28 0 12 21 12 18 29 15 1. 24 9 1. 14 18 27 29 20 8. 4. 22 10 19 0 21 0 4. 23 23 3. 27 21 4. 24 21 20 18 28 20 13 9 2. 4. 22 15 13 19 14 16 28 2. 8. 8. 1. 25 10 1. 10 16 0 0 25 10 17 10 1. 3. 17 8. 1. 7. 16 0 21 29 22 25 7. 7. 9 0 18 15 12 11 11 21 5. 9 13 13 3. 12 6. 15 9 4. 12 19 28 1. 1. 25 18 19 15 24 15 15 3. 27 13 27 29 28 29 28 23 26 13 4. 26 20 25 11 18 4. 3. 6. 17 4. 15 15 10 15 6. 5. 21 6. 19 26 18 11 16 6. 10 3. 21 1. 5. 9 4. 20 25 1. 0 27 11 7. 23 2. 11 17 21 21 0 10 19 18 4. 17 13 2. 27 5. 10 16 25 6. 24 26 12 15 6. 2. 26 8. 11 14 18 25 14 0 24 29 6. 10 22 17 1. 16 23 4. 3. 17 2. 19 17 21 29 25 14 7. 6. 10 14 24 1. 11 2. 25 22 21 26 13 27 25 16 10 14 1. 6. 12 27 18 26 25 0 16 16 1. 4. 9 23 29 16 1. 22 26 28 4. 16 28 15 29 12 13 18 26 21 3. 25 0 3. 2. 21 26 27 5. 26 17 22 0 21 4. 0 27 12 25 5. 25 7. 8. 5. 23 24 29 1. 2. 20 19 5. 21 2. 13 9 27 24 20 4. 4. 21 4. 4. 29 0 22 0 0 9 18 24 28 0 22 23 8. 21 1. 5. 13 20 11 12
我想这正是你想要的:

function kanbanView() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("ACTIVE");
  const vA = sh.getRange(1,1,sh.getLastRow(),17).getValues();
  const findCriteria = sh.getRange(19, 10).getValue();
  const newArray=[];
  const foundValues=[];
  vA.forEach((r,i)=>{
    if(r[0]==findCriteria) {
      newArray.push([r[6],r[4],r[3],r[5],r[7],r[8],r[9]]);
      foundValues.push(i+1); 
    }
     
  });
  console.log(JSON.stringify(newArray));
  console.log(JSON.stringify(foundValues));
} 
这是我的数据:

可乐 可乐 可乐 可乐 可乐 可乐6 可乐 可乐 可乐 可乐 COL11 可乐 COL13 可乐 可乐15 COL16 COL17 COL18 COL19 可乐 20 29 23 28 9 22 1. 23 2. 5. 20 4. 27 7. 5. 24 22 17 26 4. 2. 18 17 18 29 22 25 26 11 10 22 17 14 5. 18 28 27 7. 13 25 4. 18 0 20 25 25 24 12 23 7. 5. 1. 26 13 4. 10 10 4. 27 18 27 23 28 23 9 29 14 25 26 8. 9 25 6. 12 14 0 29 21 29 2. 21 1. 25 13 10 4. 3. 26 21 10 7. 15 5. 29 4. 26 8. 23 13 17 19 7. 22 16 7. 27 15 2. 27 19 29 12 9 29 11 21 6. 0 28 9 25 12 5. 23 7. 28 6. 1. 5. 4. 26 6. 6. 12 27 10 21 0 14 27 17 22 8. 28 18 18 7. 13 6. 18 21 13 27 28 10 29 4. 13 10 11 17 6. 8. 17 18 2. 10 6. 3. 13 1. 13 16 2. 7. 11 22 11 8. 8. 20 27 10 19 5. 29 23 12 18 16 1. 19 1. 5. 24 27 18 10 4. 1. 28 5. 3. 17 14 16 10 3. 20 28 28 4. 8. 26 16 22 24 28 12 27 12 13 17 22 8. 12 22 8. 21 29 22 18 14 15 2. 7. 8. 10 9 14 15 16 27 29 5. 11 10 8. 7. 10 0 6. 2. 8. 22 19 21 0 0 10 27 28 23 12 3. 23 21 26 16 28 17 5. 19 13 6. 0 3. 28 0 12 21 12 18 29 15 1. 24 9 1. 14 18 27 29 20 8. 4. 22 10 19 0 21 0 4. 23 23 3. 27 21 4. 24 21 20 18 28 20 13 9 2. 4. 22 15 13 19 14 16 28 2. 8. 8. 1. 25 10 1. 10 16 0 0 25 10 17 10 1. 3. 17 8. 1. 7. 16 0 21 29 22 25 7. 7. 9 0 18 15 12 11 11 21 5. 9 13 13 3. 12 6. 15 9 4. 12 19 28 1. 1. 25 18 19 15 24 15 15 3. 27 13 27 29 28 29 28 23 26 13 4. 26 20 25 11 18 4. 3. 6. 17 4. 15 15 10 15 6. 5. 21 6. 19 26 18 11 16 6. 10 3. 21 1. 5. 9 4. 20 25 1. 0 27 11 7. 23 2. 11 17 21 21 0 10 19 18 4. 17 13 2. 27 5. 10 16 25 6. 24 26 12 15 6. 2. 26 8. 11 14 18 25 14 0 24 29 6. 10 22 17 1. 16 23 4. 3. 17 2. 19 17 21 29 25 14 7. 6. 10 14