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