【问题标题】:Custom Functions stopped working自定义函数停止工作
【发布时间】:2017-09-01 00:28:28
【问题描述】:

我有一张表格,它使用一个简单的自定义函数来给我当前月份的缩写。

/**
* A custom function takes a # and returns a month
 *
 * @param {Number} Month #.
 * @return {String} Month Name.
 * @customfunction
 */
function MONTHNAME(input) {
  var monthvar = {
    1:'Jan',
    2:'Feb',
    3:'Mar',
    4:'Apr',
    5:'May',
    6:'Jun',
    7:'Jul',
    8:'Aug',
    9:'Sep',
    10:'Oct',
    11:'Nov',
    12:'Dec'
  }
  return monthvar[input]
}

如果我将此代码复制并粘贴到不同的工作表(不是此工作表的副本),那么它会按预期工作。

我通常会在像 =MONTHNAME(MONTH(TODAY())) 这样的单元格中输入它

我有一个使用 excel 函数的解决方法,但它看起来很乱。

=IF(MONTH(TODAY()) = 1,"Jan",if(MONTH(TODAY()) = 2,"Feb",IF(MONTH(TODAY()) = 3, "Mar",if (MONTH(TODAY()) = 4,"Apr",if(MONTH(TODAY()) = 5,"May",if(MONTH(TODAY()) = 6,"Jun",if(MONTH(TODAY( )) = 7,"七月",if(MONTH(TODAY()) = 8,"八月",if(MONTH(TODAY()) = 9,"九月",if(MONTH(TODAY()) = 10, "十月",if(MONTH(TODAY()) = 11,"十一月",if(MONTH(TODAY()) = 12,"十二月","-")))))))))))

我也试过去Reference from google,我复制了双重功能,但在这张纸上也失败了。

/**
 * Multiplies the input value by 2.
 *
 * @param {number} input The value to multiply.
 * @return The input multiplied by 2.
 * @customfunction
 */
function DOUBLE(input) {
  return input * 2;
}

我已经使用了 2 个不同的帐户删除了此脚本的权限并重新添加了它们。它们在脚本编辑器的调试器中运行良好。

有什么建议吗?我不想为此重新设置新的电子表格。

【问题讨论】:

  • 对我来说没问题。
  • 您是否收到错误消息?
  • = text(today(),"mmm")
  • 如前所述,TEXT 函数绰绰有余。您真的不需要编写所有脚本。
  • 我特别收到此错误“您无权执行该操作。(第 3 行)。”

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


【解决方案1】:

你可以试试这个:

=INDEX( {"Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun"; "Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec"}, MONTH(TODAY()))

您的自定义函数可能工作正常,但不会像原生函数那样一直刷新。

反之亦然:

=MATCH("Apr", {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"},0)


或者使用text函数:

= text(today(),"mmm")

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2019-02-19
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多