Google 表格脚本:为表格添加自定义公式

发布时间:2024-02-06 14:30

通过 Google 表格脚本可以方便的为表格增加默认没有的公式。

使用公式

上一篇 Google 表格脚本简介 里提到了脚本里的函数可以在表格的公式里直接调用,例如可以自定义一个 DOUBLE 函数,当输入公式=DOUBLE(A1)将 A1 的值乘以二倍后返回。

function DOUBLE(input) {
  return input * 2;
}

输入值处理

我们知道公式是可以传入单个单元格(例如 A1)或者单元格区域(例如 A1:A2)的,使用自定义公式时系统先会自动处理传入的值,然后再作为参数传给函数。

例如公式=DOUBLE(A1)传入的值就是1,公式=DOUBLE(A1:B1),传入的值会是一个二维数组[[1,3]],公式=DOUBLE(A1:B2)传入[[1,3],[2,'']]

所以需要在根据公式的用途在函数里添加处理数组的方法。

function DOUBLE(input) {
  if (input.map) {
    return input.map(DOUBLE);
  } else {
    return input * 2;
  }
}

Google 表格脚本:为表格添加自定义公式_第1张图片

自动提示功能

自定义公式也支持自动提示功能,需要在函数前添加相关注释。

/**
 * 将数字乘以 2
 *
 * @param {number|Array>} 单元格或单元格范围
 * @return 乘以 2
 * @customfunction
 */
function DOUBLE(input) {
  console.log(input);
  if (input.map) {
    return input.map(DOUBLE);
  } else {
    return input * 2;
  }
}

注意

  • 自定义公式名称不能何内置公式冲突,不能以_结尾;
  • 虽然公式不区分大小写,但是脚本里的函数是区分大小写的;
  • 公式里使用的函数必须在 30 秒内返回值,否则返回错误;
  • 公式里每使用一次函数都会去请求服务器,如果大量使用返回结果会很慢,所以应该尽量直接传入单元格区域,而不是每一个单元格单独调用函数。例如本文的 DOUBLE 函数,如果要求一列数值的二倍,应该直接使用一次=DOUBLE(A1:A100),而不是=DOUBLE(A1)=DOUBLE(A2)……

参考

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号