对于我的工作,我会自动化程序来帮助我的团队成员和员工。在同事的帮助下,我们创建了一个 Google Sheets 函数,该函数计算所有座席的出勤点,以将它们显示在表单上的数组中。由于计算量大,函数往往会经常崩溃。只需将公式重新粘贴到它所在的单元格中即可解决此问题。
谷歌最近发布了谷歌表格的宏,我试图为此目的使用宏;然而,由于该函数位于容器绑定脚本中,因此在尝试重置工作表上的函数时,宏会产生“参考错误”。我也尝试创建一个函数来执行此操作并收到相同的结果。
我试图用来重置工作表单元格的功能:
function ResetPoints(){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().setValue('').setFormulaR1C1(
'=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!R11C1:R30C1))'
);
spreadsheet.getCurrentCell().offset(20, 0).activate();
spreadsheet.getCurrentCell().setValue('').setFormulaR1C1(
'=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!R31C1:R50C1))'
);
spreadsheet.getCurrentCell().offset(20, 0).activate();
spreadsheet.getCurrentCell().setValue('').setFormulaR1C1(
'=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!R51C1:R70C1))'
);
spreadsheet.getCurrentCell().offset(20, 0).activate();
spreadsheet.getCurrentCell().setValue('').setFormulaR1C1(
'=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!R71C1:R91C1))'
);
spreadsheet.getCurrentCell().offset(21, 0).activate();
spreadsheet.getCurrentCell().setValue('').setFormulaR1C1(
'=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!R92C1:R100C1))'
);
spreadsheet.getCurrentCell().offset(1, 0).activate();
}
我只用一个单元格简化了宏。公式更新为“ =calculateAttendancePoints(ARRAYFORMULA(#REF!)) ”错误消息是“未知函数:calculateAttendancePoints
function ResetPoints() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.getCurrentCell().setValue('')
.setFormula('=calculateAttendancePoints(ARRAYFORMULA(Overview5.0!$A$11:$A$30))');
}
这是清单文件:
{
"timeZone": "America/New_York",
"dependencies": { },
"exceptionLogging": "STACKDRIVER",
"sheets": {"macros": [
{
"menuName": "calculateAttendancePoints",
"functionName": "calculateAttendancePoints"
},
{
"menuName": "ResetPoints",
"functionName": "ResetPoints",
"defaultShortcut": "Ctrl+Alt+Shift+5"
}
]}
}
有没有办法使用宏间接或通过函数重置单元格中的自定义函数?