【问题标题】:How to get results of a custom google sheet function in cells如何在单元格中获取自定义 google sheet 函数的结果
【发布时间】:2021-06-27 16:48:52
【问题描述】:

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

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) 放入单元格时,它应该提供数据。它可以是一个表格,其中一列是字段名,下一列是字段值。

【问题讨论】:

  • 我添加了一个包括基础知识的答案。为了能够做出更具体的答案,请描述该函数的作用以及预期结果是什么,包括它是单个值还是多个值,在这种情况下应该如何放置它们(单列,多行/单行多列)
  • 嗨,这个公式从提供的 url 中提取数据并在日志中给出目标价格。我需要在一个单元格中......在日志中这给出了 5 个字段名和 5 个字段值,由: 分隔
  • 所有相关细节都应直接包含在问题中。请edit 添加此类详细信息。附言您应该更具体地了解您希望如何由您的自定义函数返回。你想要一个字符串吗?您想在一个单元格中显示字段名称,并在右侧或下方的单元格中显示相应的值吗?
  • 问题已更新..希望对您有所帮助...谢谢
  • 我更新了答案。

标签: google-apps-script google-sheets custom-function


【解决方案1】:

问题正文中的脚本不包含 return 语句,但 Google Sheets 自定义函数应该有一个返回 Google Sheets 支持的值/对象(数字、字符串、布尔值、日期或数组的数组支持的值/对象),例如:

/**
 * 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

【讨论】:

    【解决方案2】:

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

    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++;
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多