0

我有很多网址,我想从谷歌表上的 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”我想我用错了。

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

4

2 回答 2

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()是可能的,但可选。

于 2020-07-28T09:00:43.477 回答
0

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

如果您仍然无法使用它,请分享您的工作表副本,我会尽力提供进一步帮助。

于 2020-07-27T16:02:07.067 回答