如何更改运行函数的单元格的格式

Had*_*san 4 google-sheets google-apps-script google-sheets-custom-function

如果我有以下用户定义的函数,我可以返回文本“foo”...

function myFunction(input){
   return "You wrote: "+ input;
}
Run Code Online (Sandbox Code Playgroud)

如何通过代码为单元格指定红色背景?尽管这是一个简单的示例,但我的脚本更复杂,我想通过代码分配格式(我不想使用“格式”>“条件格式...”选项;我需要在单个脚本中配置所有内容。

这里面有什么可以发挥作用的吗?

function myFunction(input){
   setBackground('red');
   return "You wrote: "+ input;
}
Run Code Online (Sandbox Code Playgroud)

getActiveCell对我不起作用,因为这会触发单击(或激活)的单元格,而不一定是包含公式的单元格。

Cam*_*rts 6

如果我遵循正确,您将使用公式语法调用应用程序脚本函数,方法是=myFunction()在工作表中放入一个单元格。

在这种情况下,没有基于脚本的方法来将格式应用于包含公式的单元格。您不仅不会自动获得对函数中父单元格的引用,而且也无权从单元格公式内的自定义函数调用中调用set方法(例如)。Range.setBackground()

文档中的“使用 Apps 脚本服务”标题下对此进行了说明:

电子表格:只读(可以使用大多数 get*() 方法,但不能使用 set*())。无法打开其他电子表格(SpreadsheetApp.openById() 或 SpreadsheetApp.openByUrl())。

https://developers.google.com/apps-script/guides/sheets/functions#advanced

您的自定义函数(当作为自动执行的公式放置在单元格中时)唯一可以做的就是返回字符串或数组,然后将其显示在工作表中。