在Google文档/电子表格的自定义公式中使用现有的电子表格公式

时间:2010-09-10 15:42:50

标签: google-apps-script google-sheets

我喜欢在Google Docs Spreadsheets中编写自己的公式。但通常我想要做的是非常类似于已经存在的功能。例如,我找不到将日期(2010年8月31日)转换为星期(星期二)词汇日的功能。我想写:

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

显然,我可以使用核心javascript编写所有这些逻辑,但是已经存在一个名为WEEKDAY()普通电子表格函数takes a date and converts into into a number representing the day of the week [0 => Sunday, 1=> Monday, etc]

如何从我的自定义脚本中访问这个功能表(或通常是任何功能)?

2 个答案:

答案 0 :(得分:1)

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

  

我明白需要。我说了   同样在GAS帮助论坛1中也是如此   早期的一个当GAS可用时   但是GAS团队的反应是   不是很有希望...... :(实质上   我们需要一个包含的GAS类   电子表格功能允许   使用它们。

     

请注意,在一般电子表格中   功能已经几乎可以   用作函数式编程   语言而不需要脚本   他们因为高级功能   像ArrayFormula,FILTER,SORT,   独特等等。不幸的是,它不是   可以创建,例如代换   宏可以让我们快速   重复使用公式(在伪宏中   格式):

     

名称:INVERSE描述:反向a   columnar array语法:#INVERSE(array   )调用:#INVERSE(#1)执行:   = ARRAYFORMULA(SORT(#1; ROW(#1); FALSE))

答案 1 :(得分:0)

在自定义应用中,您可以通过以下方式使用内置的Google电子表格公式:

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

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

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

现在,设置如下公式:

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

另外,如果你想将0,1等转换为星期日,星期一......那么定义一个这样的数组:

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

然后使用:

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

您可以使用ctrl + enter或转到View-> Logs in script editor本身来查看日志。