【发布时间】:2022-11-12 09:04:44
【问题描述】:
我想要完成的事情似乎应该很简单,但我正在用头撞墙。我有 API 调用工作。我可以将数据提取到 App Script 中,我的问题是将其操作到表格中。这是 XML:
`
<advanced_computer_search>
<id>6</id>
<name>_Java-Version</name>
<view_as>Standard Web Page</view_as>
<sort_1/>
<sort_2/>
<sort_3/>
<criteria>
<size>0</size>
</criteria>
<display_fields>
<size>4</size>
<display_field>
<name>Computer Name</name>
</display_field>
<display_field>
<name>Operating System Version</name>
</display_field>
<display_field>
<name>Java Version</name>
</display_field>
<display_field>
<name>Last Check-in</name>
</display_field>
</display_fields>
<computers>
<size>48</size>
<computer>
<name>TEST-MBP-CWP</name>
<udid>103481203840912384098213409</udid>
<id>14</id>
<Computer_Name>TEST-MBP-CWP</Computer_Name>
<Operating_System_Version>12.6.0</Operating_System_Version>
<Java_Version/>
<Last_Check_in>2022-11-10 10:42:29</Last_Check_in>
</computer>
<computer>
<name>test-mbp (3)</name>
<udid>103481203840912384098213407</udid>
<id>22</id>
<Computer_Name>test-mbp (3)</Computer_Name>
<Operating_System_Version>12.6.0</Operating_System_Version>
<Java_Version/>
<Last_Check_in>2022-11-09 13:32:15</Last_Check_in>
</computer>
<computer>
<name>test-mbp19</name>
<udid>103481203840912384098213408</udid>
<id>24</id>
<Computer_Name>test-mbp19</Computer_Name>
<Operating_System_Version>11.7.0</Operating_System_Version>
<Java_Version>1.8.0_201</Java_Version>
<Last_Check_in>2022-10-18 13:18:26</Last_Check_in>
</computer>
<computer>
<name>TEST-2019-MBP-I5</name>
<udid>103481203840912384098213406</udid>
<id>43</id>
<Computer_Name>TEST-2019-MBP-I5</Computer_Name>
<Operating_System_Version>12.5.1</Operating_System_Version>
<Java_Version/>
<Last_Check_in>2022-11-09 18:30:29</Last_Check_in>
</computer>
</computers>
<site>
<id>-1</id>
<name>None</name>
</site>
</advanced_computer_search>
` 我正在寻找的是一张用于顶行计算机的表格: (名称、udid、id、Computer_Name、Operating_System_Version、Java_Version、Last_Check_in)
然后随后的 x 行数将是所有数据。
`
//Query jamf
var url = '<MY URL)>;
var jamfXml = UrlFetchApp.fetch(url, {
"method": "GET",
"headers": {
"Authorization": "MY AUTH",
"Content-Type": "application/xml"
},
}).getContentText();
//console.log(jamfXml);
var document = XmlService.parse(jamfXml);
var computers = document.getRootElement().getChildren("computers");
//console.log(computers);
var computersLength = document.getRootElement().getChild("computers").getChild("size").getValue();
`
我认为会有一种动态方式将元素标签放入第一行,因此可以重复使用相同的脚本,而无需对列标题或列数进行太硬的编码。然后将动态数据放在以下行中。我只是不知道怎么做。
任何帮助是极大的赞赏。
我尝试的是上面代码的各种版本,其中包含 2 到 3 个嵌套的 foreach 循环。与此类似:
`
var listComputers=[]
console.log(computers.length)
//console.log(computers[0][0].length)
computers.forEach(function(item){
//console.log(item.getValue());
var computer=[]
item.getChildren().forEach(function(details){
//console.log(details.getValue());
details.getChildren().forEach(function(moreDetails){
//console.log(moreDetails.getValue());
computer.push(moreDetails.getValue());
})
})
listComputers.push(computer);
})
console.log(listComputers);
console.log(listComputers[0].length);
console.log(listComputers[0][1].length);
console.log(listComputers[0][1]);
`
不包括写入工作表,我已经能够做到这一点,但数据最终全部连接到一个单元格中。
【问题讨论】:
标签: javascript arrays xml google-sheets datatable