如何在Google Sheets App Scripts/绘图中创建可切换文本与颜色的玩家状态按钮
实现按钮文本与颜色动态切换的方案
步骤1:修改现有函数,添加按钮样式控制逻辑
你需要通过SpreadsheetApp的绘图对象方法定位按钮,再结合D2单元格的状态切换按钮的文本和颜色。以下是修改后的完整代码:
function ActiveOnly() { var sheet = SpreadsheetApp.getActiveSheet(); var toggleRange = sheet.getRange('D2'); var currentValue = toggleRange.getValue(); // 切换D2单元格的布尔值 toggleRange.setValue(!currentValue); // 绑定了当前函数的按钮(通过触发脚本匹配) var targetButton = sheet.getDrawings().find(drawing => drawing.getOnAction() === 'ActiveOnly'); if (targetButton) { if (!currentValue) { // 切换为仅显示活跃状态:按钮文本改为"Show All Players",填充色设为红色 targetButton.setCaption('Show All Players'); targetButton.setFillColor('#FF0000'); } else { // 切换为显示所有状态:按钮文本改为"Show Active Only",填充色设为绿色 targetButton.setCaption('Show Active Only'); targetButton.setFillColor('#00FF00'); } } }
步骤2:设置按钮初始状态
首次使用前手动配置按钮初始样式:
- 若D2初始值为
false(显示所有玩家),将按钮文本设为Show Active Only,填充色选绿色 - 若D2初始值为
true(仅显示活跃玩家),将按钮文本设为Show All Players,填充色选红色
关键注意点
- 确保按钮的分配脚本选择
ActiveOnly,否则点击不会触发函数 - 若找不到目标按钮,可以通过
console.log(sheet.getDrawings())打印所有绘图对象的信息,确认按钮的触发脚本名称 - 颜色支持十六进制值,也可使用
SpreadsheetApp.newColor().setRgb(0,255,0).build()这种RGB方式定义颜色
内容的提问来源于stack exchange,提问作者user21652920
相关产品推荐
相关产品推荐

