google-apps-script - Google 文档从脚本调用 ImportXML

标签 google-apps-script google-sheets web-scraping google-sheets-formula urlfetch

我正在 Google 文档表中使用 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数据。

我现在这样做:

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
    }
}

关于google-apps-script - Google 文档从脚本调用 ImportXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10533479/

相关文章:

google-apps-script - 汇总数据的脚本未更新

javascript - 如何在 R 中抓取 javascript 表?

Python + Selenium - 网页抓取和计算 HTML 中某些文本数据的出现次数

python - 带有仅适用于本年度的表单数据的 POST 请求

google-apps-script - 调用 saveAndClose 后如何重新打开事件文档?

search - 我可以以某种方式停靠搜索框 (ctrl +f) 或在 Google 表格的顶部菜单中创建一个新的搜索框,以便它始终可见吗?

javascript - 尝试使用 IF 语句自动填充单元格

google-apps-script - 根据单元格值隐藏列

google-apps-script - DriveApp 父文件夹

google-apps-script - Google Sheets 寻找像 VLOOKUP 这样的 google 脚本,但组合找到的值并将它们连接到特定的单元格中