如何通过G10单元格的Checkbox触发运行Google App Script
实现复选框触发PDF导出脚本
一、添加触发判断函数
编写onEdit监听函数,用来识别目标复选框的编辑事件,满足条件时调用导出脚本:
function onEdit(e) { var range = e.range; var sheet = range.getSheet(); // 判断是否是「Fact.」工作表的G10单元格,且复选框被勾选 if (sheet.getName() === 'Fact.' && range.getColumn() === 7 && range.getRow() === 10 && range.getValue() === true) { exportSheet(); // 可选:将复选框重置为未勾选,避免重复触发 range.setValue(false); } }
二、验证原导出脚本权限
你的exportSheet脚本功能逻辑正常,但需要先手动运行一次完成授权:
- 在Google Apps脚本编辑器中选中
exportSheet函数 - 点击运行按钮,按提示完成授权(允许脚本访问你的表格和云端硬盘)
三、完整代码整合
将两个函数放在同一个脚本文件中:
function onEdit(e) { var range = e.range; var sheet = range.getSheet(); if (sheet.getName() === 'Fact.' && range.getColumn() === 7 && range.getRow() === 10 && range.getValue() === true) { exportSheet(); range.setValue(false); // 可选:重置复选框状态 } } function exportSheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var mainSheetName = 'Fact.'; var mainSheet = ss.getSheetByName(mainSheetName); var name = mainSheet.getRange('C4').getValue(); var name2 = mainSheet.getRange('C7').getValue(); var sheets = ss.getSheets(); // 隐藏非目标工作表 for (var i = 0; i < sheets.length; i++) { if (sheets[i].getSheetName() !== mainSheetName) { sheets[i].hideSheet(); } } // 生成并保存PDF到指定文件夹 DriveApp.getFolderById('1CH9BY-Tm55W2xkZULjvD2xUsaeN42sbR') .createFile(ss.getBlob().getAs('application/pdf').setName(`${name2} Fact. # ${name}.pdf`)); // 恢复所有工作表显示 for (var i = 0; i < sheets.length; i++) { sheets[i].showSheet(); } }
四、关键注意事项
- 权限问题:必须手动运行一次
exportSheet完成授权,否则触发器会因权限不足报错 - 复选框重置:代码中的
range.setValue(false)可避免重复触发,不需要可直接删除 - 工作表名称:确保
onEdit和exportSheet中的工作表名称完全一致,否则无法触发
内容的提问来源于stack exchange,提问作者Elias Chahin
相关产品推荐
相关产品推荐

