Google Apps 脚本仍然没有(2020 年 1 月 7 日)包含 Google 表格原生函数的 API。
但是您可以在电子表格中设置命名为命名范围的单元格的公式(本机函数)。
然后在 GAS 中:
var nativeOutput = spreadsheet.getRangeByName("outputCell").getValue();
瞧!您的 GAS 正在调用单元格中的本机函数。
您可以通过命名工作表(或任何工作表)中由另一个单元格中的公式引用的另一个单元格来将数据从 GAS 发送到单元格中的本机函数:
spreadsheet.getRangeByName("inputCell").setValue(inputData);
您的 GAS 可以动态创建这些单元,而不是对它们进行硬编码,例如:
// Create native function, its input and output cells; set input value; use native function's output value:
// Use active spreadsheet.
var spreadsheet = SpreadsheetApp.getActive();
// Name input, output cells as ranges.
spreadsheet.setNamedRange("inputCell", spreadsheet.getRange("tuples!F1"));
spreadsheet.setNamedRange("outputCell", spreadsheet.getRange("tuples!F2"));
var outputCell = spreadsheet.getRangeByName("outputCell");
var inputCell = spreadsheet.getRangeByName("inputCell");
// Set native formula that consumes input cell's value, outputting in formula's cell.
outputCell.setFormula("=WEEKNUM(inputCell)");
// Call native function by setting input cell's value for formula to consume.
// Formula sets its cell's value to formula's output value.
inputCell.setValue(15);
// Consume native function output.
var nativeOutput = outputCell.getValue();
Logger.log("nativeOutput: "+ JSON.stringify(nativeOutput)); // Logs "nativeOutput: 3"
注意:这种技术会暴露电子表格用户可以访问/更改的单元格中的代码,其他电子表格操作可能会覆盖这些单元格。