2012-05-10 9 views
2

Google DocsシートでImportXMLを使用して、sistrix apiのデータを取得しています。それはうまく動作しますが、1枚のシートに50個のImportXMLコマンドの制限があります。だから、私は、ImportXMLコマンドをセル(一時的な)式に書いて、セルの結果値を取り戻してそれを宛先セルにコピーするスクリプトを使用しました。したがって、シート内の1つの一時セルにのみ表示されるため、必要なだけ多くのImportXMLクエリを実行できます。 ここでの問題は、ImportXMLクエリSOMETIMESが非常に長くかかるか、N/Aで返されることです。Google docsスクリプトから呼び出されるImportXML

私のスクリプトでは、ImportXMLクエリが返されるのを待たずに結果が破損する可能性がありますか?私は現在、この方法でそれをやっている:

function GetFormulaData(formula, sheet, row, col) 
{ 

// write the formula (ImportXML(...)) to the specified cell 
sheet.getRange(row, col).setFormula(formula); 

// return the value of this cell resulting from the formula 
return sheet.getRange(row, col).getValue(); 
} 

式(IMPORTXMLクエリ)が行われ、細胞内に戻り値を書いたので、私は後で読むことができるのであれば、これは明らかにのみ動作することができます。 誰かが、スクリプトからImportXMLを呼び出す経験や代替方法を持っていますか?

は、私は別の方法で、今これを解決した Michbeck

に挨拶します。 GoogleドキュメントスクリプトでUrlFetchapp()をImportXMLよりも使用する方が一般的です。しかし、httpレスポンスからxmlデータを自分で取得する必要があります。この質問は終了することができます。

答えて

1

私は今これを別の方法で解決しました。 GoogleドキュメントスクリプトでUrlFetchapp()をImportXMLよりも使用する方が一般的です。しかし、httpレスポンスからxmlデータを自分で取得する必要があります。

私は今、このような方法でそれを行う:Michbeckable.How @

var response = UrlFetchApp.fetch(apiString).getContentText(); 
var xmlContent = Xml.parse(response, true); 
var answer = xmlContent.response.answer; 

// get what you need from the XML answer 
if (answer != null) 
{ 
    var element = answer.getElement('foo'); 
    if (element != null) 
    { 
     var attrib = element.getAttribute('bar');  
     if (attrib != null) 
      value = attrib.getValue(); // the value you want 
    } 
} 
+0

をurlfetchappを使用して、Googleの検索結果のタイトル、説明、およびURLを取得しますか()? importxmlの方がうまくいっていますか? #N/Aエラーが少なくなっていますか?Googleスクリプトからimportxmlを使用して解決策を探しているときは、#N/Aをよく受け取ります。前もって感謝します。 – user1788736

+0

@ user1788736:私はそれがGoogleの検索結果とどのように機能するのかわかりませんが、私が行ったようにSistrix APIを照会するのと同様でなければなりません。上記の私の答えを編集して、私が使ったコードのいくつかを示しています。 – Michbeckable

関連する問題