如何在单元格中获取自定义 google sheet 函数的结果

How to get results of a custom google sheet function in cells

我正在尝试获取 google sheet 中单元格中以下函数的结果。 我可以在脚本日志中得到结果,但我需要它在单元格中..有人可以添加到这个语法中,以便它的结果可以放在单元格中。

function scrapeDemo(url) {

  var html = UrlFetchApp.fetch(url).getContentText();
  var res = html.match(/<div class="cr_data rr_stockprice module">.+?(<table .+?<\/table>)/);

  var document = XmlService.parse(res[1]);
  var root = document.getRootElement();

  var trNodes = root.getChild('tbody').getChildren();
  trNodes.forEach((trNode) => {
    var tdNodes = trNode.getChildren();
    var fieldName;
    var fieldValue;
    tdNodes.forEach((tdNode, idx) => {
      if (idx % 2 === 0) {
        fieldName = tdNode.getValue().trim();
      } else {
        fieldValue = tdNode.getValue().trim();
        console.log( fieldName + " : " + fieldValue );
      }
    } );
      } );
    }

我正在尝试获取脚本登录单元格中当前可用的结果。当我将 scrapeDemo(url) 放在一个单元格中时,它应该提供数据。它可以是 table,一列是字段名,下一列是字段值。

如果您有一个范围或想要构建一个数据范围并且您正在 google sheet 中执行脚本,您可以这样做:

var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.getActiveCell("A1").setValues(valueRange);

如果要自己写一个值一个值。使用:

var sheet = SpreadsheetApp.getActive().getSheetByName("NameOfTheSheet");
sheet.setActiveRange("A1").setValues(value);

如果你想在单元格中迭代,那么使用:

...
sheet.setActiveRange("A" + i).setValues(value);
i++;
...

问题正文中的脚本不包含 return 语句,但是 Google Sheets 自定义函数应该有一个 returning [=] 支持的值/对象20=] Sheets (number, string, boolean, date, or an Array of Arrays of supported values/objects), example:

/**
 * If a and b are numbers these values will be added
 * If a or b are strings the these values will be concatenated
 */
function myFunction(a,b){
  return a + b;
}
/**
 * Returns a Matrix of X having rowNum by colNum
 *
 */
function XMATRIX(rowNum,colNum){
  var output = [];
  for(var i = 0; i < rowNum; i++){
    output[i] = [];
    for(var j = 0; j < colNum; j++){
       output[i][j] = 'X';
    }
  }
  return output
}

资源

https://developers.google.com/apps-script/guides/sheets/functions