【问题标题】:Google docs ImportXML called from script从脚本调用的 Google 文档 ImportXML
【发布时间】:2012-05-10 11:57:56
【问题描述】:

我在谷歌文档表中使用 ImportXML 从 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 更常见。但是您必须自己从 http 响应中获取 xml 数据。这个问题可以关闭。

【问题讨论】:

    标签: google-apps-script google-sheets seo google-sheets-importxml


    【解决方案1】:

    我现在以不同的方式解决了这个问题。在 google doc 脚本中使用 UrlFetchapp() 比 ImportXML 更常见。但是你必须自己从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
        }
    }
    

    【讨论】:

    • @Michbeckable.如何使用 urlfetchapp() 获取谷歌搜索结果标题、描述和 url?它比importxml更好吗?它给出的#N/A 错误更少吗?我在使用谷歌脚本中的 importxml 并寻找解决方案时经常得到#N/A,希望你能在这里帮助我。提前致谢。
    • @user1788736:我不知道它是如何与谷歌搜索结果一起工作的,但应该类似于像我一样查询 Sistrix API。我在上面编辑了答案以显示我使用的一些代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多