当前位置: 首页 > 知识库问答 >
问题:

使用应用程序脚本在Google工作表中放置复选框

江洲
2023-03-14

我知道复选框是Google Sheets中一个相对较新的功能,所以我正试图找到一种在单元格中自动创建复选框的方法。

到目前为止,我还没有在谷歌应用程序脚本文档中找到与此相关的参考资料。

目前我正在手动操作,但任何使用脚本的建议都将不胜感激。

共有3个答案

宗政海
2023-03-14

您希望使用脚本在电子表格的单元格中创建复选框。如果我的理解是正确的,那么这个变通方法怎么样?不幸的是,类SpreadsheetApp还没有创建复选框的方法。(尝试使用此类方法时,会发生错误。)所以我想建议使用Sheets API创建它。

当我看到数据验证的条件类型时,BOOLEAN的文档说

单元格的值必须为真/假或在条件值列表中。由数据验证支持。呈现为单元格复选框。。。

由此,我可以理解如何使用Sheets API创建复选框。下面的脚本是一个示例脚本。这将为“A1:C3”创建6个复选框。当您使用此脚本时,请在高级Google服务和API控制台启用Sheets API,如下所示。

  • 关于脚本编辑器
  • 关于脚本编辑器

如果现在打开带有使用工作表API的脚本的脚本编辑器,则可以通过访问此URL为项目启用工作表APIhttps://console.cloud.google.com/apis/library/sheets.googleapis.com/

在本示例脚本中,将在Sheet1的“A1:C3”中创建复选框。请将此脚本用作容器绑定脚本。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetId = ss.getSheetByName("Sheet1").getSheetId();
var resource = {"requests": [
  {
    "repeatCell": {
      "cell": {"dataValidation": {"condition": {"type": "BOOLEAN"}}},
      "range": {"sheetId": sheetId, "startRowIndex": 0, "endRowIndex": 3, "startColumnIndex": 0, "endColumnIndex": 3},
      "fields": "dataValidation"
    }
  },
  {
    "updateCells": {
      "rows": [
        {"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": false}}, {"userEnteredValue": {"boolValue": false}}]},
        {"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": false}}]},
        {"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}]}
      ],
      "start": {"rowIndex": 0, "columnIndex": 0, "sheetId": sheetId},
      "fields": "userEnteredValue"
    }
  }
]};
Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
  1. dataValidation是使用repeatCell设置的
  • 这是一个简单的示例脚本。因此,请针对您的环境修改此选项

2018年6月22日,此脚本返回服务器错误的错误。

var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.CHECKBOX, ["TRUE", "FALSE"]).build();
SpreadsheetApp.getActiveSheet().getRange("A1").setDataValidation(rule);
  • 条件类型
  • 高级谷歌服务
  • 工作表API v4

如果我误解了你的问题,我很抱歉。

卢恩
2023-03-14

我不确定他们是什么时候做的,但他们现在已经添加了这个。

使用类DataValidationBuilderrequireCheckbox()方法。例子:

function setCheckboxes() {
  // Assumes there's only one sheet
  var sheet = SpreadsheetApp.getActiveSheet();

  // This represents ALL the data
  var dataRange = sheet.getDataRange();

  /* Get checkbox range from sheet data range. Assumes checkboxes are on the
  left-most column
  */
  var dataRangeRow = dataRange.getRow();
  var dataRangeColumn = dataRange.getColumn();
  var dataRangeLastRow = dataRange.getLastRow();
  var checkboxRange = sheet.getRange(
    dataRangeRow,
    dataRangeColumn,
    dataRangeLastRow
  );

  var enforceCheckbox = SpreadsheetApp.newDataValidation();
  enforceCheckbox.requireCheckbox();
  enforceCheckbox.setAllowInvalid(false);
  enforceCheckbox.build();

  checkboxRange.setDataValidation(enforceCheckbox);
}
沈开畅
2023-03-14

您现在可以在范围范围列表上直接插入复选框(或移除复选框),无需任何解决方法。还可以使用文档中的替代方法签名更改选中值/未选中值。

SpreadsheetApp.getActive()
    .getRange('Sheet2!A2:A10')
    .insertCheckboxes();
 类似资料:
  • 我有一个GoogleApps电子表格,其中一列包含日期和时间。这张纸是由几张纸合并而成的。在某些行上,该值是一个日期(即typeof sheet.getRange(i,2).getValue()==“object”,带有日期的方法)。其他时间,此单元格是一个数字(即typeof sheet.getRange(i,2).getValue()=“number”),但单元格格式将单元格显示为一个日期。

  • 在当前版本的Google Sheet中,要在单元格中插入超链接,可以执行以下操作 在新版Google Sheets中,超链接插入是不同的,您可以这样做。 但是,我有一个问题,在电子表格中插入的值不是我所期望的。在这张显示插入链接的图像中,在=HYPERLINK之前插入了一个“插入”——我不知道这是从哪里来的。有什么想法吗?

  • 有人能帮我把脚本布局转换成实际的功能代码吗?我有一般的编码知识,但我不知道正确的语法。 基本上,我需要的是一个脚本,当提交表单条目时,它会在所有工作表/选项卡之间循环。表单包含提交表单的人的姓名(字符串)、开始日期、结束日期,最后是注释字段(字符串)。 我需要脚本来遍历每个工作表的第5行,并查找在第一个表单字段中输入的字符串(提交表单的人的姓名)。如果它找到了该名称,它应该将与该名称对应的列保存到

  • 我使用脚本将数据从MySQL数据库导入到工作表中。在导入过程中,其他具有重公式的工作表(vlookup、sumifs、filter)会不断重新计算,因此需要花费很长时间。我想在MySQL数据完全导入后,通过脚本插入公式。 为了简化此过程,我想将工作表上的所有公式(这是一个很长的工作表)提取到一个文件中,并将提取的数据格式化为以下方式:示例:从工作表“摘要”中提取数据: 循环检查工作表中的每个单元格

  • 如何使用Google应用程序脚本在Google电子表格中合并多个选项卡?所有选项卡中的数据都在不断变化。 例如,我在谷歌电子表格中有“Sheet1”、“Sheet2”和“Sheet3”。所有这些表中的数据都有3列-名称和电子邮件ID

  • 我想知道如何将自定义页眉或页脚添加到使用谷歌应用程序脚本从谷歌工作表导出的PDF中。我想在页面中央添加一个页脚,上面写着“我的公司专有和机密”。 这是从图纸(即文件»下载为»PDF»标题)正常PDF导出中可用的功能 是否有任何额外的URL参数可以用来控制这些自定义字段? 目标页脚: