我在google docs工作表中使用ImportXML来从sistrix api获取数据。它运行正常但我在一张表中遇到了50个ImportXML命令的限制。因此,我使用了一个脚本,将ImportXML命令写入单元(临时)公式,并收回单元格的结果值并将其复制到目标单元格。因此,您可以根据需要执行尽可能多的ImportXML查询,因为它们只出现在工作表中的一个临时单元格中。 这里的问题是,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有经验或替代方案吗?
电贺 Michbeck
我现在以不同的方式解决了这个问题。在Google文档脚本中使用UrlFetchapp()比使用ImportXML更常见。但是你必须自己从http响应中获取xml数据。这个问题可以关闭。
答案 0 :(得分:1)
我现在以不同的方式解决了这个问题。在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
}
}