如何将应用脚本函数值(字符串)直接作为importXML函数传递给Google表格单元格?

时间:2020-07-27 14:32:25

标签: google-apps-script google-sheets

我有很多网址,我想在google sheet上通过importxml提取一些信息。 我正在尝试从网站上获得显示器的评论评分。

我想创建一个函数,以便当我给它一个单元格作为引用(包含产品的url)时,它将为importxml函数创建一个字符串(具有固定的和正确的xpath)并将其传递给它的单元格叫做。 (或相邻的一个)

function puan(x) {
  var cellFunction = '=IMPORTXML("' + x + '";"//div[@id=\'puan\']//@data-percent")';
  return cellFunction;
}

我尝试了类似的方法,但是没有用。它只是像字符串一样返回值。 该字符串看起来不错,并且如果直接将其传递给单元格,它将返回我想要的值。

然后,我尝试选择活动单元格并在其中传递值,但是它不起作用。 我想我用错了。在应用程序脚本的文档中,它说自定义功能只能更改它称为的单元格(或相邻单元格)的值

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveRange().setValue(cellFunction); 

当我将其添加到函数中并删除“ return cellFunction;”时它返回“ 0” 我想我用错了。

因为我找不到解决方法,您能指导我吗? 我也乐于接受有关提取相同信息的更好方法的建议。

2 个答案:

答案 0 :(得分:0)

您应该为此使用setFormula():https://developers.google.com/apps-script/reference/spreadsheet/range#setformulaformula

如果仍然无法正常工作,请共享工作表的副本,我会尽力帮助您。

答案 1 :(得分:0)

您有两个选择:

  • 可以通过在主函数内调用cellFunction来返回puan(x)到主函数

示例:

function myFunction() {
  var URL = "Your URL" 
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveRange().setValue(puan(URL));
}


function puan(x) {
  var cellFunction = '=IMPORTXML("' + x + '";"//div[@id=\'puan\']//@data-percent")';
  return cellFunction;
}
  • 或将值设置到puan(x)内的电子表格中

示例:

function myFunction() {
  var URL = "Your URL"
  puan(URL);
}

function puan(x) {
 var cellFunction = '=IMPORTXML("' + x + '";"//div[@id=\'puan\']//@data-percent")'; 
 SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveRange().setValue(cellFunction);
}

注意:

可以使用setFormula()代替setValue(),但这是可选的。