首页 > 解决方案 > 我想使用圆圈在 Google 表格上创建一个复选框功能

问题描述

目前,我只能复制粘贴阴影或无阴影的圆圈。我想在 Google 表格中创建类似“插入复选框”的功能。我想知道这是否可行,或者我是否应该手动完成。

阴影圈图片

标签: google-sheetsgoogle-sheets-formula

解决方案


问题:

  • 您想通过单击菜单按钮、插入的绘图或图像或您拥有的特定单元格(我猜是当前选定的单元格)插入空白圆圈(◯)。
  • 每次单击时,您都希望将插入的空白圆圈更改为黑色圆圈 (⚫)。

解决方案:

使用Google Apps 脚本(单击Tools > Script editor以访问它),您可以执行以下操作:

  • 创建一个用空白圆圈填充所有活动范围的函数(我们称之为addBlankCircles)。使用getActiveRangeList()获取选定的范围,并为每个范围创建一个具有相应维度的二维数组,用空白圆圈填充,并使用setValues(values)将空白圆圈添加到范围中。
  • 创建自定义菜单(由onOpen触发器创建)或插入可点击的图像或绘图以调用函数addBlankCircles
  • 使用onSelectionChange触发器检查所选单元格是否具有值 ◯,如果是,则将其更改为 ⚫。

代码片段:

// Copyright 2020 Google LLC.
// SPDX-License-Identifier: Apache-2.0

function onOpen() { // Add this only in case you want to call your function through a custom menu
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Add circles')
      .addItem('Add Blank Circles', 'addBlankCircles')
      .addToUi();
}

function addBlankCircles() {
  const rangeList = SpreadsheetApp.getActiveRangeList();
  rangeList.getRanges().forEach(range => {
    const columns = range.getNumColumns();
    const rows = range.getNumRows();
    const values = new Array(rows).fill("").map(() => new Array(columns).fill("◯"));
    range.setValues(values);
  })
}

function onSelectionChange(e) { // Change blank to black
  if (e.range.getValue() === "◯") e.range.setValue("⚫");
}

推荐阅读