Документы Google ImportXML вызываются из скрипта

Я использую ImportXML в листе документации Google для получения данных из sistrix api. Он работает нормально, но я столкнулся с ограничением в 50 команд ImportXML на одном листе. Поэтому я использовал сценарий, который записывает команду ImportXML в формулу ячейки (временную), возвращает полученное значение ячейки и копирует его в ячейку назначения. Таким образом, вы можете выполнять столько запросов ImportXML, сколько вам нужно, поскольку они отображаются только в одной временной ячейке на листе. Проблема здесь в том, что запрос ImportXML ИНОГДА занимает очень много времени или возвращается с 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 из скрипта?

Приветствует Мичбек

Я решил это сейчас по-другому. В скриптах документов Google чаще используется UrlFetchapp (), чем ImportXML. Но вы должны сами получить данные xml из ответа http. Этот вопрос можно закрыть.


person Michbeckable    schedule 10.05.2012    source источник


Ответы (1)


Я решил это сейчас по-другому. В скриптах документов Google чаще используется UrlFetchapp (), чем ImportXML. Но вы должны сами получить данные xml из ответа http.

Я делаю это сейчас так:

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
    }
}
person Michbeckable    schedule 11.05.2012
comment
@ Michbeckable.Как получить заголовок, описание и URL-адрес результата поиска google с помощью urlfetchapp ()? Он работает лучше чем importxml? Это дает меньше ошибок # Н / Д? Я часто получаю # Н / Д, когда использую importxml из скрипта Google и ищу решение, надеюсь, вы мне здесь поможете. Заранее спасибо. - person user1788736; 17.10.2015
comment
@ user1788736: я не знаю, как это работает с результатами поиска Google, но должно быть похоже на запрос Sistrix API, как это сделал я. Я отредактировал свой ответ выше, чтобы показать часть кода, который я использовал. - person Michbeckable; 19.10.2015