我正在尝试通过服务器API从服务器导入数据,这需要登录。
使用有关此问题的信息:Cheers MogsDad
我可以成功获取外部xml文件,并在记录器中显示数据。
我不能为我的生活写任何信息或元素到我的电子表格。在链接共享中,@ mogsdad已链接到解析XML站点。不幸的是,链接已经死了。当前代码返回XML文件。通常我会尝试使用importxml公式,但没有太多运气。 已经取消了我的编码尝试来解析XML,因此代码看起来不太糟糕
有没有人知道如何解析部分文件或知道XML解析文档的工作URL?
到目前为止,这是我的代码。提前致谢
function importFromXml(){
var url = 'URL HERE'; // Advance search for macs not encrypted.
var username = 'USER HERE';
var password = 'PASSWORD HERE';
var headers =
{
Authorization : "Basic " + Utilities.base64Encode(username+':'+password)
}
var options =
{
"method" : "get",
"headers": headers
};
var headers =
{
Authorization : "Basic " + Utilities.base64Encode(username+':'+password)
}
var options =
{
"method" : "get",
"headers": headers
};
// Getting "bad request" here - check the username & password
var result = UrlFetchApp.fetch(url, options);
var state=result.getContentText();
// You should check state.getResponseCode()
Logger.log('1: '+state);
Logger.log(parse(state));
}
function parse(txt) {
var doc = Xml.parse(txt, true);
return doc; // Return results
}
****编辑****
经过多一些游戏,我有了一些进步。
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NoFirevault");
var range = ss.getRange(1, 1);
range.setValue(state);
我设法将XML内容写入我的工作表。虽然在一个牢房里。当我尝试将数据拆分为单元格时,使用数据长度并使用setValues。它让我筋疲力尽,继续玩。
****编辑*****
经过多一点玩耍后再玩。我可以将XML数据写入工作表。 共有31个条目,具有各种属性。但是这些都会被写入每个条目的单个单元格。这是对进入单个单元格的所有31个条目的改进。
如果它有帮助,这是我正在看的XML布局。 我想要计算机部分中的计算机数据。
function importFromJamf(){
var url = 'URL HERE'; // Advance search for macs not encrypted.
var username = 'USER HERE';
var password = 'Password';
var headers =
{
Authorization : "Basic " + Utilities.base64Encode(username+':'+password)
}
var options =
{
"method" : "get",
"headers": headers
};
var headers =
{
Authorization : "Basic " + Utilities.base64Encode(username+':'+password)
}
var options =
{
"method" : "get",
"headers": headers
};
var result = UrlFetchApp.fetch(url, options);
var state = result.getContentText();
var document = XmlService.parse(state);
var entries = document.getRootElement().getChild('computers').getChildren(); // Working but values joined into one row
for (i=0;i<entries.length;i++){
var value = entries[i].getValue();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getRange(i+1,1).setValue(value);
}
}
答案 0 :(得分:0)
function importFromJamf(){
var url = 'url';
var username = 'user';
var password = 'pw';
var headers =
{
Authorization : "Basic " + Utilities.base64Encode(username+':'+password)
}
var options =
{
"method" : "get",
"headers": headers
};
var result = UrlFetchApp.fetch(url, options);
var state = result.getContentText();
var document = XmlService.parse(state);
var array= [];
var entries = document.getRootElement().getChild('computers').getChildren('computer');
for(i = 0 ; i < entries.length ; i++){
var a = entries[i].getContent(5).getValue();
var b = entries[i].getContent(8).getValue();
var c = entries[i].getContent(9).getValue();
var d = entries[i].getContent(6).getValue();
var e = entries[i].getContent(11).getValue();
var f = entries[i].getContent(12).getValue();
var g = entries[i].getContent(10).getValue();
var data = [a,b, c,d,e, f,g];
array.push(data);
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
sheet.getRange("A2:Z").clearContent();
var range = sheet.getRange(2,1,array.length, array[0].length);
range.setValues(array);
}
上面的代码适用于我需要的东西,它允许我将我想要的值抓取到可用于写入工作表的数组中。
.getContent()帮助我获取每个循环的y列数组的值
但我确信有更好的方法可以解决这个问题。