我的新闻通讯服务提供了一个API,可获取XML,CSV或JSON统计信息。不幸的是,API调用不会直接在浏览器中打开XML文件,而是将文件下载到我的计算机上。
因此,(我猜)Google表格中的IMPORTXML函数不起作用。
我曾尝试在Google表格中创建Google Apps脚本来下载文件,但是脚本说不允许通过URL提供凭据。因此,也许这也是IMPORTXML不起作用的问题?
只能通过HTTP Auth访问该API,并且我通过URL(USERNAME:PASSWORD @ domain)提交凭据,因此不必处理弹出窗口。
最终,我希望将XML数据获取到Google表格中,以便将数据导入到Google Data Studio中。
您对此有任何解决方案吗?
我的XML是:
<report>
<trackinghistory>
<item id="123">
<id>123</id>
<resource_id>abc</resource_id>
<type>111</type>
</item>
<item id="456">
<id>456</id>
<resource_id>def</resource_id>
<type>222</type>
</item>
</trackinghistory>
</report>
我当前的代码是:
function myFunction() {
var options = {};
options.headers = {"Authorization": "Basic " + Utilities.base64Encode("USERNAME" + ":" + "PASSWORD")};
var xml = UrlFetchApp.fetch("https://example.com/api.php", options).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
Logger.log([xml]); // <--This gives me the whole XML
Logger.log([document]); // <--This gives me "[[Document: No DOCTYPE declaration, Root is [Element: <report/>]]]"
Logger.log([root]); // <--This gives me "[[Element: <report/>]]"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
//Loop for Appending the XML to Sheets
}