簡體   English   中英

如何將所有陣列合並為一個

[英]How do I combine all arrays into one

我有一個循環功能,可以在其中找到所有ID,然后將獲取所有詳細信息報告中的每個ID。

我將每個ID詳細信息存儲在'reportData'數組中。

當前它將逐個打印每個數組。

我嘗試了很多更改,但似乎我的問題只是一個簡單的邏輯放置。


function IDDetails()
{
  var ID = []
  for (row = 4; row < 150; row++)
  {
    var col = 4;
    var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
    var activeSheetTab = activeSheet.getSheetByName('Newsletter Report');
    var ID = activeSheetTab.getRange(row, col).getValue();
    if (ID.length != 0){
      var root = '';
      var endpoint1 = '';
      var endpoint2 = '';

      var params = 
      {
        'method': 'GET',
        'muteHttpExceptions': true,
        'headers': {'Authorization': 'apikey ' + API_KEY}
      };
      try
      {  
        var response = UrlFetchApp.fetch();
        var data = response.getContentText();
        var json = JSON.parse(data);
        var report = json['details'];
        var reportData = [];
        for (var i = 0; i < report.length; i++)
        {
          reportData.push([
            ID,
            report[i]["item1"],
            report[i]["item2"],
            report[i]["item3"]
          ]); 
        }
      } catch(e) {
          Logger.log(e);
      }; 

     Logger.log(reportData);

     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = ss.getSheetByName('Details');
     var numRows = reportData.length;
     var numCols = reportData[0].length;
     sheet.getRange(2,1,numRows,numCols).setValues(reportData);
    }
    else {}
  }
}

但是,我要做的是,將所有ID的詳細信息存儲在一個數組中,稱之為“ reportDataALL”

然后將其打印為一個。

結果示例:

ID 1:

+---+---------+--------+--------+
|ID | item1   | item2  | item3  |
+---|---------+--------+--------+
| 1 | xxx     | yyy    | zzz    |
+---+---------+--------+--------+
| 1 | ooo     | rrr    | eee    |
+---+---------+--------+--------+
ID 2:
+---+---------+--------+--------+
|ID |item1    | item2  | item3  |
+---|---------+--------+--------+
| 2 | aaa     | bbb    | ccc    |
+---+---------+--------+--------+
| 2 | ggg     | ppp    | lll    |
+---+---------+--------+--------+

我期望的是:

ALL ID
reportDataALL

+---+---------+--------+---------+
|ID | item1   | item2  | item3   |
+---|---------+--------+---------+
| 1 | xxx     | yyy    | zzz     |
+---|---------+--------+---------+
| 1 | ooo     | rrr    | eee     |
+---+---------+--------+---------+
| 2 | aaa     | bbb    | ccc     |
+---+---------+--------+---------+
| 2 | ggg     | ppp    | lll     |
+---+---------+--------+---------+

我認為您創建了很多新表,但是您應該將它們推入主結果表

            function IDDetails()
            {
              var ID = []
              var reportData = [];            ///     <<<<<<<<< the target array
              for (row = 4; row < 150; row++)
              {
                var col = 4;
                var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
                var activeSheetTab = activeSheet.getSheetByName('Newsletter Report');
                var ID = activeSheetTab.getRange(row, col).getValue();
                if (ID.length != 0){
                  var root = '';
                  var endpoint1 = '';
                  var endpoint2 = '';

                  var params =
                  {
                    'method': 'GET',
                    'muteHttpExceptions': true,
                    'headers': {'Authorization': 'apikey ' + API_KEY}
                  };
                  try
                  {
                    var response = UrlFetchApp.fetch();
                    var data = response.getContentText();
                    var json = JSON.parse(data);
                    var report = json['details'];

                    for (var i = 0; i < report.length; i++)
                    var DETAILS=[]; //create next dimension

                    DETAILS[0]=id;  
                    DETAILS[1]=report[i]["item1"];  
                    DETAILS[2]=report[i]["item2"];  
                    DETAILS[3]=report[i]["item3"];  

                       reportData.push(DETAILS) ;

                  } catch(e) {
                      Logger.log(e);
                  };

                 Logger.log(reportData);

                 var ss = SpreadsheetApp.getActiveSpreadsheet();
                 var sheet = ss.getSheetByName('Details');
                 var numRows = reportData.length;
                 var numCols = reportData[0].length;
                 sheet.getRange(2,1,numRows,numCols).setValues(reportData);
                }
                else {}
              }
            }

現在您可以使用

   reportData[i][j]

如果您想擁有二維數組

與對象相同

                   var DETAILS={}; //same as object

                    DETAILS[id]=id;  
                    DETAILS["item1"]=report[i]["item1"];  
                    DETAILS["item2"]=report[i]["item2"];  
                    DETAILS["item3"]=report[i]["item3"];  
                    reportData.push(DETAILS) ;

通過訪問

               reportData[i].id
               reportData[i].item1 

等等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM