Google スプレッドシートで Google Apps Script を使用して次の XML ドキュメントを解析しようとしています。lineItems
特に、 の値とその属性の値を解析したいと考えていますcoaCode
。たとえば、RTLR = 50211.000000 です。
<ReportFinancialStatements Major="1" Minor="0" Revision="1">
<FinancialStatements>
<COAMap></COAMap>
<AnnualPeriods>
<FiscalPeriod Type="Annual" EndDate="2009-06-30" FiscalYear="2009">
<Statement Type="INC">
<FPHeader>
<PeriodLength>12</PeriodLength>
<Source Date="2009-09-23">ARS</Source>
</FPHeader>
<lineItem coaCode="SREV">50211.000000</lineItem>
<lineItem coaCode="RTLR">50211.000000</lineItem>
<lineItem coaCode="SCOR">12001.000000</lineItem>
</Statement>
</FiscalPeriod>
これは私のコードスニペットです:
function parse(txt) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var document = XmlService.parse(txt);
var root = document.getRootElement();
var elements = root.getChild('FinancialStatements').
getChild('AnnualPeriods').getChildren('FiscalPeriod');
var columnOffset = 2;
var rowOffset = 5;
for (var i = 0; i < elements.length; i++) {
var column = elements.length - i + columnOffset;
var endDate = elements[i].getAttribute('EndDate').getValue();
var fiscalYear = elements[i].getAttribute('FiscalYear').getValue();
var fiscalPeriodType = elements[i].getAttribute('Type').getValue();
// ***** SCRIPT CRASHES HERE: *****
var values = elements[i].getChildren('Statement').getChildren('lineItem');
for (var j = 0; j < values.length; j++) {
var row = j + rowOffset;
var value = values[j].getValue();
sheet.getRange(row,column).setValue(value);
}
}
}
コードを実行すると、次の行でクラッシュします
var values = elements[i].getChildren('Statement').getChildren('lineItem');
エラーメッセージとともに:
TypeError: Cannot find function getChildren in object [Element: <Statement/>],
[Element: <Statement/>],[Element: <Statement/>].
数時間エラーを見つけようとしましたが、成功しませんでした (.getChildren
組み合わせのさまざまなバリエーションを試しました)。
私のコードの何が問題なのか、何か考えはありますか?