繁体   English   中英

忽略 Google Sheets 自定义脚本中的空单元格

[英]Ignoring empty cells in Google Sheets custom script

我正在尝试创建一个公式来计算 Google 表格上的净推荐值。 我有公式工作,但只有当我指定确切的范围时。 我的问题是这个特定的工作表会随着时间的推移而增长,我不想一直重新选择范围。 我想要做的是选择整行,让它自动更新 NPS 分数。 我对这种方法的问题是每个空单元格都被视为零,这会破坏我的百分比。 如何让我的函数忽略空单元格???

这是我的尝试:

 /** This is a custom formula that calculates the Net Promoter Score. @customFunction */ function NPS(numArr) { var detractors = new Array(); var passive = new Array(); var promoters = new Array(); var i = 0; for (i = 0; i < numArr.length; i++) { if (isNaN(numArr[i])) { console.log(numArr[i]); } else { if (numArr[i] >= 9) { promoters.push(numArr[i]); } else if (numArr[i] === 7 || numArr[i] === 8) { passive.push(numArr[i]); } else if (numArr[i] <= 6) { detractors.push(numArr[i]); } } } var promoPercentage = promoters.length / numArr.length; var detractorsPercentage = detractors.length / numArr.length; return (promoPercentage - detractorsPercentage) * 100; }

您可以使用 JavaScript filter [1] 函数从您获得的数组 ( numArr ) 中过滤空值。 另外,请注意,您正在选择一系列单元格,因此参数将是一个二维数组 [2],其中每个值都是一个“行”数组,其中填充了该行的列值,以防您只想要第一个值对于每一行(对于像 A1:A25 这样的一列范围),您需要访问每个“行”数组的第一个元素以获取实际值:

function NPS(numArr) {

  var detractors = new Array();
  var passive = new Array();
  var promoters = new Array();

  var i = 0;

  //Filter empty elements
  numArr = numArr.filter(function(element) {
    return element[0] !== '';
  })

  for (i = 0; i < numArr.length; i++) {
    if (isNaN(numArr[i][0])) {
      console.log(numArr[i][0]);
    } else {
      if (numArr[i][0] >= 9) {
        promoters.push(numArr[i][0]);
      } else if (numArr[i][0] === 7 || numArr[i][0] === 8) {
        passive.push(numArr[i][0]);
      } else if (numArr[i][0] <= 6) {
        detractors.push(numArr[i][0]);
      }
    }
  }

  var promoPercentage = promoters.length / numArr.length;
  var detractorsPercentage = detractors.length / numArr.length;

  return (promoPercentage - detractorsPercentage) * 100;
}

[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

[2] https://developers.google.com/apps-script/guides/sheets/functions#arguments

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM