【问题标题】:xbrl into google spreadsheets using google script使用谷歌脚本将 xbrl 导入谷歌电子表格
【发布时间】:2013-07-22 20:26:34
【问题描述】:

谁能告诉我如何使用谷歌脚本将 XBRL 数据输入谷歌电子表格?

http://www.fossil.com/attachments/en_US/financials/2013/fosl-20130330.xml

这是链接。

function XBRLexplore() {
  var target = "http://www.fossil.com/attachments/en_US/financials/2013/fosl-20130330.xml";
  var pageTxt = UrlFetchApp.fetch(target).getContentText();
  var pageDoc = Xml.parse(pageTxt,true);

//var temp=getDivById( pageDoc.getElement(), 'Tag204' );
//var temp=getElementById('Tag204')
}

我似乎无法找到“tag204”的第一个元素。不知道如何正确使用 get by id 函数。

【问题讨论】:

  • 你试过什么?如果您发布一些您尝试的代码并就您面临的特定问题寻求帮助而不是问“给我代码”,这将有所帮助
  • 哈哈。我会,但我不知道怎么做。这就是我问的原因。我只需要一些起始代码。就像这家伙在这里提供的一样。您可以从我以前的帖子中看到我确实包含了我拥有的代码。 stackoverflow.com/questions/14805527/…
  • @DavidF。好,谢谢。我只想要第一个元素。它有一个用于 ID 的“Tag204”。我怎么抓住它?我已经尝试了上面的代码。

标签: xml google-apps-script google-sheets xbrl


【解决方案1】:

请参阅previous questions 关于解析 XML 文档的内容,因为 XBRL 是一种使用标准化业务术语分类法的 XML 应用程序。 (请记住 - HTML 文档是带有标签或元素的 XML 类型,特定于网页设计。)

例如,this answer 显示了一些非常基本的 xml 元素导航。您应该记得this one 对此进行了更详细的解释。

同样的技术也适用,但使用 AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount 等元素类型(包含 id="Tag204" 的元素就是其中之一。)

<us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Tag204" decimals="0" contextRef="D2013Q1" unitRef="Shares">201000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>

XML 元素名称由两部分组成,一个以可选名称空间为前缀的必需名称。在这种情况下,命名空间是us-gaap,它告诉我们词汇源。

使用this answer 中引入的getElementByVal() 实用程序获取该元素并将其写入电子表格的方法如下:

function xbrl() {
  var target = "http://www.fossil.com/attachments/en_US/financials/2013/fosl-20130330.xml";
  var pageTxt = UrlFetchApp.fetch(target).getContentText();
  var xbrl = Xml.parse(pageTxt,true).getElement();

  var Tag204 =
      getElementByVal( xbrl,
                      'AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount',
                      'id',
                      'Tag204' );

  var data = [];
  var row = [];
  var name = Tag204.getName().getLocalName();
  row.push(name);
  var attributes = Tag204.getAttributes();
  for (var j=0; j<attributes.length; j++) {
    row.push(attributes[j].toXmlString())
  }
  data.push(row);

  var sheetId = '---Sheet-Id---';
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName("XBRL");
  sheet.getRange(1,1,data.length,data[0].length).setValues(data);
}

【讨论】:

  • 如果我想将所有数据检索到谷歌电子表格中,最好的方法是什么?我正在学习 SOAP,我应该使用它吗?还是javascript足够好?
  • SOAP 是一种用于交换对象(使用 XML)的协议,Javascript 是一种编程语言。当然,您可以使用 Javascript 使用 SOAP。
  • 你能给我看几行代码来获取所有数据吗?我可以做电子表格部分。我想我现在可以应付了。我只需要一种最有效地将数据转换为可以放入电子表格的格式的方法。
  • 我实际上要做的是将所有“us-gaap”相关元素放在一张纸上,同时将所有“fosl:”元素放在另一张纸上。如果你教我怎么做,我可以做另一个。
  • 我已经把结构弄平了。但是我在命名空间和本地名称方面遇到了问题。关于如何做的快速指针将不胜感激。 stackoverflow.com/questions/18040867/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多