7

我喜欢在 Google Docs 电子表格中编写自己的公式。但通常我想做的与已经存在的功能非常相似。例如,我找不到将日期(2010 年 8 月 31 日)转换为一周中的词汇日(星期二)的函数。我想写:

=LexWeekDay('31-Aug-2010')
'Tuesday'

显然,我可以使用核心 javascript 编写所有这些逻辑,但是已经存在一个名为的普通电子表格函数WEEKDAY(),它需要一个日期并转换为代表星期几的数字 [0 => Sunday, 1=> Monday, etc]

如何从我的自定义脚本中访问电子表格已经定义的这个函数(或通常任何函数)?

4

2 回答 2

1

我在Google help上问了同样的问题,但没有得到解决方案。根据用户 Ahab 的说法:

我理解需要。我很早就在 GAS 帮助论坛1中表达了同样的看法,当时 GAS 可用,但 GAS 团队的反应不是很有希望...... :( 本质上,我们需要一个包含电子表格功能的 GAS 类确实允许使用他们。

请注意,由于 ArrayFormula、FILTER、SORT、UNIQUE 等高级函数,通常电子表格函数实际上已经可以用作函数式编程语言,而无需编写脚本。不幸的是,无法创建例如替换宏这将使我们能够快速重用公式,例如(以伪宏格式):

名称:INVERSE 描述:反转列数组 语法:#INVERSE(array) 调用:#INVERSE(#1) 执行:=ARRAYFORMULA(SORT(#1;ROW(#1);FALSE))

于 2011-01-05T19:51:52.243 回答
1

在您的自定义 appscript 中,您可以通过这种方式使用 google 电子表格的内置公式:

假设您想=WEEKDAY()在单元格 A1 上使用函数。

然后,在您的自定义 appscript 函数中获取像这样的活动电子表格:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME");

现在,像这样设置公式:

sheet.getRange("A1").setValue("=WEEKDAY()");

此外,如果您想将 0,1 等转换为 Sunday,Monday...然后定义一个这样的数组:

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

然后使用:

var dayIndex = sheet.getRange("A1").getValue(); 
Logger.log(days[dayIndex]);

您可以使用 ctrl+enter 或通过脚本编辑器本身的 View->Logs 查看日志。

于 2016-12-27T07:30:10.967 回答