我有以下代碼下載文件的XBRL到谷歌電子表格谷歌腳本xml獲取父?
function XBRLexplore() {
var ss = SpreadsheetApp.openById("0Aiy1DTQRndx6dFZLVDJfRnptbmRFUTM2S2lnUlRfWWd");
var Sheet = ss.getSheetByName("Sheet1"); // Activate sheet
var target = "http://www.sec.gov/Archives/edgar/data/867773/000086777313000052/spwr-20130630.xml";
var pageTxt = UrlFetchApp.fetch(target).getContentText();
var xbrl = Xml.parse(pageTxt,true).getElement()
var test=xbrl.getElements();
var output=[];
for (var i=0;i<test.length;i++){
var element=test[i]
var f=[element.contextref,element.id,element.unitref,element.decimals,e=element.Text]
output[i]=f;
}
Sheet.getRange(1,1,test.length,5).setValues(output);
}
這將由5列下降約1700行到谷歌電子表格。
但是,我希望對象「xbrl」中的所有子元素都添加到每個元素旁邊。
例如:目前,聯排1421是如下數據:
D2013Q2QTD Fact-456FCC569047499F03F61D8FBE559EC1 shares -3 133973000
我希望它看起來像這樣: us-gaap WeightedAverageNumberOfDilutedSharesOutstanding D2013Q2QTD Fact-456FCC569047499F03F61D8FBE559EC1 shares -3 133973000
添加命名空間us-gaap
和WeightedAverageNumberOfDilutedSharesOutstanding
在第2列
這將是很好,如果每個元素我可以使用某種getParent()
函數然後只是堅持它在循環過程中的前2列。
我試圖使用getNamespace()
循環裏的每個元素,但它給我一個錯誤
var ff=element.getNamespace()
我m希望從所有節點獲取所有內容。你是怎樣做的?感謝您指出新的與舊的XML服務。我沒有意識到這一點。 – jason
你可以使用通配符嗎?我如何得到'us-gaap'命名空間相關的元素? – jason
最後一個問題。謝謝你的幫助。這是有幫助的。它涉及到「contextRef」屬性。在上面的例子中,上面例子的屬性就像「D2012Q2」。我知道這是在文檔的某個地方定義的。我如何看待contextref? – jason