json - Google App 脚本 - 输出和解析数据时出现问题
问题描述
我正在使用谷歌应用程序脚本来提取关于我们的 chrome book 设备的数据,除了尝试询问“cpuStatusReports”之外,一切正常
如果我使用
cputemp = JSON.stringify(chromebooks[i].cpuStatusReports)
Logger.log(cputemp);
我得到的输出是这个
[{"cpuUtilizationPercentageInfo":[23,16,12,18,15,12,18,15,20,16],"cpuTemperatureInfo":[{"temperature":43,"label":"soc_dts0\n"} ,{"温度":43,"label":"soc_dts1\n"}],"reportTime":"2019-06-24T11:53:24.973Z"},{"cpuUtilizationPercentageInfo":[45],"cpuTemperatureInfo" :[{"温度":33,"label":"soc_dts0\n"},{"temperature":34,"label":"soc_dts1\n"}],"reportTime":"2019-06-25T12: 43:40.826Z"},{"cpuUtilizationPercentageInfo":[12],"cpuTemperatureInfo":[{"temperature":42,"label":"soc_dts0\n"},{"temperature":42,"label": "soc_dts1\n"}],"reportTime":"2019-06-25T14:01:47.016Z"},{"cpuUtilizationPercentageInfo":[27],"cpuTemperatureInfo":[{"温度":29,"label":"soc_dts0\n"},{"温度":30,"label":"soc_dts1\ n"}],"reportTime":"2019-06-26T07:59:40.739Z"},{"cpuUtilizationPercentageInfo":[12,12,7,8,3,4,14,13,27,12], "cpuTemperatureInfo":[{"temperature":45,"label":"soc_dts0\n"},{"temperature":46,"label":"soc_dts1\n"}],"reportTime":"2019-06 -26T10:59:41.370Z"}]2019-06-26T07:59:40.739Z"},{"cpuUtilizationPercentageInfo":[12,12,7,8,3,4,14,13,27,12],"cpuTemperatureInfo":[{"温度": 45,"label":"soc_dts0\n"},{"温度":46,"label":"soc_dts1\n"}],"reportTime":"2019-06-26T10:59:41.370Z"}]2019-06-26T07:59:40.739Z"},{"cpuUtilizationPercentageInfo":[12,12,7,8,3,4,14,13,27,12],"cpuTemperatureInfo":[{"温度": 45,"label":"soc_dts0\n"},{"温度":46,"label":"soc_dts1\n"}],"reportTime":"2019-06-26T10:59:41.370Z"}]
我该如何拆分这个?特别是在“cpuTemperatureInfo”字段之后?如果有人可以提供一个工作示例,我可以将其用于 Diskreport,并且它也以相同的格式输出。
谢谢您的帮助!
更新:**完整的功能代码
function chromebookdetails2() {
var domain, chromebooks, page, ss, sheet, pageToken, i
var sheetData4 = onSheet.getSheetByName("chromebook")
//sheetData4.clear();
domain = "my domain here"
chromebooks= new Array()
do{
page = AdminDirectory.Chromeosdevices.list("my_customer",
{domain: domain,
maxResults: 1000,
pageToken: pageToken
})
for (i in page.chromeosdevices){
chromebooks.push(page.chromeosdevices[i])
}
pageToken = page.nextPageToken
}while(pageToken){
var row = 3 //starting row position
for (var i = 0; i < chromebooks.length; i++) {
var sheetData4 = onSheet.getSheetByName("chromebook")
/////////////////////Header////////////////////////////////////////
var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy")
sheetData4.getRange(1,1).setValue("Date Ran - "+date); //(2,1 means 2nd row, 1st column)
sheetData4.getRange(2,1).setValue("orgUnitPath"); //(2,1 means 2nd row, 1st column)
sheetData4.getRange(2,2).setValue("annotatedUser");
sheetData4.getRange(2,3).setValue("annotatedLocation");
sheetData4.getRange(2,4).setValue("annotatedAssetId");
sheetData4.getRange(2,5).setValue("serialNumber");
sheetData4.getRange(2,6).setValue("lastEnrollmentTime");
sheetData4.getRange(2,7).setValue("deviceId");
sheetData4.getRange(2,8).setValue("bootMode");
sheetData4.getRange(2,9).setValue("recentUsers");
sheetData4.getRange(2,10).setValue("macAddress");
sheetData4.getRange(2,11).setValue("lastSync");
sheetData4.getRange(2,12).setValue("osVersion");
sheetData4.getRange(2,13).setValue("platformVersion");
sheetData4.getRange(2,14).setValue("activeTimeRanges");
sheetData4.getRange(2,15).setValue("model");
sheetData4.getRange(2,16).setValue("etag");
sheetData4.getRange(2,17).setValue("firmwareVersion");
sheetData4.getRange(2,18).setValue("status");
sheetData4.getRange(2,19).setValue("ethernetMacAddress");
sheetData4.getRange(2,20).setValue("notes");
sheetData4.getRange(2,21).setValue("systemRamTotal");
sheetData4.getRange(2,22).setValue("CPU");
if(chromebooks[i].length == 0){
// array is empty
Logger.log('empty');
} else {
//array not empty
Logger.log('not empty');
cputemp = JSON.stringify(chromebooks[i].cpuStatusReports)
Logger.log(cputemp);
/////////////////////Array Data///////////////////////////////////
sheetData4.getRange(row,1).setValue(chromebooks[i].orgUnitPath);
sheetData4.getRange(row,2).setValue(chromebooks[i].annotatedUser);
sheetData4.getRange(row,3).setValue(chromebooks[i].annotatedLocation);
sheetData4.getRange(row,4).setValue(chromebooks[i].annotatedAssetId);
sheetData4.getRange(row,5).setValue(chromebooks[i].serialNumber);
sheetData4.getRange(row,6).setValue(chromebooks[i].lastEnrollmentTime);
sheetData4.getRange(row,7).setValue(chromebooks[i].deviceId);
sheetData4.getRange(row,8).setValue(chromebooks[i].bootMode);
sheetData4.getRange(row,9).setValue(chromebooks[i].recentUsers);
sheetData4.getRange(row,10).setValue(chromebooks[i].macAddress);
sheetData4.getRange(row,11).setValue(chromebooks[i].lastSync);
sheetData4.getRange(row,12).setValue(chromebooks[i].osVersion);
sheetData4.getRange(row,13).setValue(chromebooks[i].platformVersion);
sheetData4.getRange(row,14).setValue(chromebooks[i].activeTimeRanges);
sheetData4.getRange(row,15).setValue(chromebooks[i].model);
sheetData4.getRange(row,16).setValue(chromebooks[i].etag);
sheetData4.getRange(row,17).setValue(chromebooks[i].firmwareVersion);
sheetData4.getRange(row,18).setValue(chromebooks[i].status);
sheetData4.getRange(row,19).setValue(chromebooks[i].ethernetMacAddress);
sheetData4.getRange(row,20).setValue(chromebooks[i].notes);
sheetData4.getRange(row,21).setValue(chromebooks[i].systemRamTotal / (1024*1024) /1024); // "/ (1024*1024)" converts bytes to Mb "/1024" then converts back to Gb
//sheetData4.getRange(row,22).setValue(placeholder for cpu temp results));
}
row++
Logger.log(row)
}
}
}
解决方案
尝试这个:
cputemp =(chromebooks[i].cpuStatusReports).toString().split(",");
Logger.log(cputemp);
for (var j in cputemp)
{
var element = cputemp[j];
Logger.log(element);
}
然后你可以看到哪个 j 有你需要的条目
推荐阅读
- xamarin.forms - PRISM - NavigationPage 的 CustomRenderer
- python - 如何为 QGraphicsItem pyqt5 创建动态工具提示
- c# - 无法将包含多个类的列表转换为 DataTable
- android - Android-如何在适配器中扩展 AppCompatActivity()?
- viewvc - viewvc 彩色并排差异?
- reactjs - 使用空数组作为输入的`useCallback`和没有第二个参数的`useCallback`有什么区别?
- jestjs - 如何使用 vue 测试工具触发 v-autocomplete “输入”事件?
- python - python中的jsonschema Draft7多种自定义类型
- python - 使用 Fabric 运行进程挂起
- php - 不在数据库中插入数据