2

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

スクリプトが 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 を呼び出す経験や代替手段を持っている人はいますか?

ミクベックに挨拶

私はこれを別の方法で解決しました。ImportXML よりも、Google doc スクリプト内で UrlFetchapp() を使用する方が一般的です。ただし、http 応答から自分で xml データを取得する必要があります。この質問は閉じることができます。

4

1 に答える 1

2

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

私は今、このようにしています:

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
    }
}
于 2012-05-11T07:33:09.723 に答える