使用 appscript 从 JSON 获取值

Getting values from JSON using appscript

我正在使用 chrome 设备用户和来自目录的 JSON 响应,使用 google appscript 创建二维数组。我已经能够获得价值。但是,当我尝试让 recentUsers 表示为:

    {
    "kind": "directory#chromeosdevices",
    "chromeosdevices": [
     {
       "kind": "directory#chromeosdevice",
       "etag": "1234567890"
       "deviceId": "def456",
       "serialNumber": "234567",
       "status": "ACTIVE",
       "lastSync": "2013-03-05T17:30:04.325Z",
       "supportEndDate": "2014-04-05T17:30:04.325Z",
       "annotatedUser": "help desk",
       "annotatedLocation": "Mountain View help desk Chromebook",
       "annotatedAssetId": "1234567890",
       "notes": "Loaned from support",
       "orderNumber": "1234",
       "willAutoRenew": true,
       "osVersion": "Browser Version 18.0",
       "platformVersion": "Platform Version 1415.2.0",
       "firmwareVersion": "Firmware Version 1.2.3.4",
       "bootMode": "validated",
       "lastEnrollmentTime": "2012-04-05T17:30:04.325Z",
       "orgUnitPath": "corp/engineering",
       "recentUsers": [
         {
           "type": "USER_TYPE_MANAGED",
           "email": "user@customer.com" //I'm trying to get the most recent user's email 
         }
       ],
       "activeTimeRanges": [
         {
           "date": "2012-04-05",
           "activeTime": "3600000"
         }
       ],
     }
  ],
  "nextPageToken": "abcdefghijkl123"
}

我得到了一个数组,但我无法得到值。我正在尝试获取最新用户的电子邮件。任何人都有使用 appscript 的经验?我试过 recentUsers[0].email 和 recentUser[0]['email']。这是我必须做的代码://我评论了我试图推送一个值的地方 在此处输入代码

var chromeArgs = {   
  maxResults: 200,
  orderBy: 'annotatedUser',
  projection: "FULL"
 
};


var getChromes = (AdminDirectory.Chromeosdevices.list('XXXXXXXXX', chromeArgs));

var chromes = getChromes.chromeosdevices;
   if (chromes && chromes.length > 0) {
 Logger.log('Devices:');
 //2d array
 var wholeValues = [];

     for (var i = 0; i < chromes.length; i++){  
//create a 1D array first with pushing 0,1,2 elements with a for loop
   var value = [];
   for (var j = 0; j < 1; j++) {
     var chrms = chromes[i];
     var recentUser = chrms.recentUsers;
     value.push(recentUser[0].email); // Here is where I need help 
}
    //pushing the value array with [0,1,2] to thw wholeValues array. 
    wholeValues.push(value);
  } // the outer for loop runs five times , so five the 0,1,2 with be pushed in to thewholevalues array by creating wholeValues[0][0],wholeValues[0][1]...till..wholeValues[4][2]

  Logger.log(wholeValues); '''

你非常接近,你唯一需要改变的是在循环

中用动态recentUsers[j]替换静态recentUsers[0]

样本:

function getChromes(){
  var chromeArgs = {   
    maxResults: 200,
    orderBy: 'annotatedUser',
    projection: "FULL"  
  };   
  var getChromes = (AdminDirectory.Chromeosdevices.list('XXXXXXXXX', chromeArgs));  
  var chromes = getChromes.chromeosdevices;
  if (chromes && chromes.length > 0) {
    Logger.log('Devices:');
    var wholeValues = [];    
    for (var i = 0; i < chromes.length; i++){  
      var chrms = chromes[i];
      var recentUser = chrms.recentUsers;
      var value = [];
      for (var j = 0; j < recentUser.length; j++) {
        Logger.log(recentUser[j].email);
        value.push(recentUser[j].email); 
      } 
      wholeValues.push(value);
    }     
    Logger.log(wholeValues); 
  }
}

请注意,您需要动态指定内循环的迭代限制 j < recentUser.length; 而不是 j < 1 以考虑每个 chrome 设备的不同数量的近期用户。