1

初心者ですが、私の限られた知識が私を失敗させるところまでこれで遊んでいます

株式番号の会社名を取得しようとしています。Google Finance の URL を呼び出すと、XML 応答が返されます。

XML 応答から Company 要素と属性を抽出したい (私の XML 用語が正しいことを願っています)

デバッグを使用すると、そのほとんどを見ることができますが、「thecompanyname」が返されない理由がわかりません。

以下の高く評価されたコードを助けてください

function myFunction() {

//Base URL for getting the Stock information
// http://www.google.com/ig/api?stock=....


var single_quote_returntxt = UrlFetchApp.fetch("http://www.google.com/ig/api?stock=0005").getContentText();
//Get a single stock quote for HSBC code 0005

var quoteinxmldoc = Xml.parse(single_quote_returntxt,true);
// Put the receieved xml response into XMLdocument format


var topelement = quoteinxmldoc.getElement().getElement();
//Get the top element and the next am guessing here a little 

var wantedelement = topelement.getElements();
//the element level i want

var thecompanyname =  wantedelement[3].getText();
//The company name as a string  


Browser.msgBox("End");

}
4

2 に答える 2

2

XMLドキュメントの要素に誤ってアクセスしています。デバッガーを使用して、その構造を確認してください。

wantedelement

配列wantedelementには、それぞれにキーが付いたオブジェクトが含まれていdataます。したがって、会社名にアクセスするには、次のようにする必要があります。

var thecompanyname =  wantedelement[3].data;

結果は次のとおりです。

デバッガーのスクリーンショット

于 2013-03-19T12:49:19.950 に答える
0

純粋な GAS メソッドと Logger の使用を希望する場合は、何がどこにあるのかを確認する方法を次に示します...

function myFunction() {
var single_quote_returntxt = UrlFetchApp.fetch("http://www.google.com/ig/api?stock=0005").getContentText();
Logger.log(single_quote_returntxt)
var quoteinxmldoc = Xml.parse(single_quote_returntxt,true);
var topelements = quoteinxmldoc.getElement().getElement().getElements();
for(var e in topelements){
  var element = topelements[e]
  var att = element.getAttributes();
    for(var a in att){Logger.log('Element '+e+' ='+element.getName().getLocalName()+' attribute :'+ att[a].getName().getLocalName()+'  :  '+att[a].getValue())}
  var wantedelement = element.getElements();
  for(var w in wantedelement){Logger.log('wantedelement '+w+' :'+wantedelement[w].getText())}
      }
}

Logger.log =

Element 0 =symbol attribute :data  :  0005
Element 1 =pretty_symbol attribute :data  :  0005
Element 2 =symbol_lookup_url attribute :data  :  /finance?client=ig&q=0005
Element 3 =company attribute :data  :  HSBC Holdings plc (Hong Kong)
Element 4 =exchange attribute :data  :  HKG
Element 5 =exchange_timezone attribute :data  :  
Element 6 =exchange_utc_offset attribute :data  :  
Element 7 =exchange_closing attribute :data  :  
Element 8 =divisor attribute :data  :  2
Element 9 =currency attribute :data  :  HKD
Element 10 =last attribute :data  :  84.55
Element 11 =high attribute :data  :  84.95
Element 12 =low attribute :data  :  84.10
Element 13 =volume attribute :data  :  17368416
Element 14 =avg_volume attribute :data  :  12414
Element 15 =market_cap attribute :data  :  1562574.91
Element 16 =open attribute :data  :  84.40
Element 17 =y_close attribute :data  :  84.15
Element 18 =change attribute :data  :  +0.40
Element 19 =perc_change attribute :data  :  0.48
Element 20 =delay attribute :data  :  15
Element 21 =trade_timestamp attribute :data  :  5 hours ago
Element 22 =trade_date_utc attribute :data  :  20130319
Element 23 =trade_time_utc attribute :data  :  075959
Element 24 =current_date_utc attribute :data  :  20130319
Element 25 =current_time_utc attribute :data  :  132906
Element 26 =symbol_url attribute :data  :  /finance?client=ig&q=0005
Element 27 =chart_url attribute :data  :  /finance/chart?q=HKG:0005&tlf=12
Element 28 =disclaimer_url attribute :data  :  /help/stock_disclaimer.html
Element 29 =ecn_url attribute :data  :  
Element 30 =isld_last attribute :data  :  
Element 31 =isld_trade_date_utc attribute :data  :  
Element 32 =isld_trade_time_utc attribute :data  :  
Element 33 =brut_last attribute :data  :  
Element 34 =brut_trade_date_utc attribute :data  :  
Element 35 =brut_trade_time_utc attribute :data  :  
Element 36 =daylight_savings attribute :data  :  true

しかし、Mogsdad メソッドの方がクリーンで高速です... 間違いありません ;-)

于 2013-03-19T13:28:56.473 に答える