Google apps script 如何使用googlesheets从JS调用ISOWEEKNUM

Google apps script 如何使用googlesheets从JS调用ISOWEEKNUM,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想在自定义函数中从JS调用GoogleSheets函数ISOWEEKNUM,但无法使其工作 当前代码为 function customFun(date) { return ISOWEEKNUM(date); } 但是,这只会导致一个错误: ReferenceError:未定义ISOWEEKNUM 我怎样才能让它工作?有没有关于如何调用标准函数的参考?我相信您的目标如下 您希望使用Google Apps脚本检索周数 您想使用函数customFun作为自定义函数 对于这个问题,这个答案如

我想在自定义函数中从JS调用GoogleSheets函数ISOWEEKNUM,但无法使其工作

当前代码为

function customFun(date) {
  return ISOWEEKNUM(date);
}
但是,这只会导致一个错误:

ReferenceError:未定义ISOWEEKNUM


我怎样才能让它工作?有没有关于如何调用标准函数的参考?

我相信您的目标如下

  • 您希望使用Google Apps脚本检索周数
  • 您想使用函数
    customFun
    作为自定义函数
对于这个问题,这个答案如何

问题和解决方法: 不幸的是,在当前阶段,电子表格的内置功能不能直接与Google Apps脚本一起使用。而且,自定义函数不能放置公式。因此,在这种情况下,需要使用变通方法。在这里,我想提出以下两种解决办法

解决方法1: 在此解决方法中,当将
=customFun(date)
放入单元格时,使用OneEdit事件触发器将其替换为
=ISOWEEKNUM(date)

function customFun(date) {return ""}

function onEdit(e) {
  const range = e.range;
  const formula = range.getFormula();
  const f = formula.match(/=customFun\(([\S\s\w]+)\)/);
  if (f.length == 2) {
    range.setFormula(`ISOWEEKNUM(${f[1]})`);
  }
}
示例脚本: 要使用此脚本,请将
=customFun(today())
放入单元格。这样,OneEdit事件触发器将
=customFun(date)
的公式替换为
=ISOWEEKNUM(today())

function customFun(date) {return ""}

function onEdit(e) {
  const range = e.range;
  const formula = range.getFormula();
  const f = formula.match(/=customFun\(([\S\s\w]+)\)/);
  if (f.length == 2) {
    range.setFormula(`ISOWEEKNUM(${f[1]})`);
  }
}
解决方法2: 在此解决方法中,当将
=customFun(today())
放入单元格时,周数由Google Apps脚本计算,结果值放入单元格

示例脚本:
  • getWeek()
    来自
参考资料: