google-apps-script - 如何使用 Google 表格从 JS 调用 ISOWEEKNUM
问题描述
我想在自定义函数中从 JS 调用谷歌表格函数 ISOWEEKNUM 并且无法使其正常工作。
当前代码是
function customFun(date) {
return ISOWEEKNUM(date);
}
但是,这只会导致错误:
ReferenceError:未定义 ISOWEEKNUM
我怎样才能让它工作,有没有参考如何调用标准函数?
解决方案
我相信你的目标如下。
- 您想使用 Google Apps 脚本检索周数。
- 您想将该函数
customFun
用作自定义函数。
为此,这个答案怎么样?
问题和解决方法:
遗憾的是,在现阶段,Spreadsheet 的内置功能无法直接与 Google Apps Script 一起使用。而且,自定义函数不能放公式。因此,在这种情况下,需要使用解决方法。在这里,我想提出以下两种解决方法。
解决方法 1:
在此解决方法中,当=customFun(date)
放置到单元格时,将替换为=ISOWEEKNUM(date)
使用 OnEdit 事件触发器。
示例脚本:
为了使用这个脚本,请放到=customFun(today())
一个单元格中。至此,公式=customFun(date)
被替换=ISOWEEKNUM(today())
为 OnEdit 事件触发器。
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 脚本计算,并将结果值放入单元格。
示例脚本:
function customFun(date) {
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(), 0, 1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
}
return date.getWeek();
}
getWeek()
来自https://stackoverflow.com/a/7765814/7108653。
参考:
推荐阅读
- ios - 为什么 UITapGestureRecognizer 永远不会在状态开始时被调用?
- android - 在 Andorid 中为回收站视图之外的元素获取空白
- python - 使用请求的 POST 方法返回 simplejson.errors.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)
- python - 我可以将 Python 的安装目录移动到任何地方(是否可移植)?
- sqlite.swift - 寻找 sqlite.swift 示例项目
- mongodb - 我如何能够根据数组长度进行查询?
- python - python函数将数据转换为JSON
- bot-framework-composer - Microsoft Bot Framework Composer Teams 包发送任务模块
- c - 如何修复 munmap_chunk():在 C 中调用 fclose 并覆盖堆栈变量时指针无效?
- database - 为我的用例选择数据库时遇到问题。有任何帮助/见解会受到重视吗?