【问题标题】:How can I automate input using checkbox?如何使用复选框自动输入?
【发布时间】:2022-12-16 12:02:54
【问题描述】:

我目前正在从事一个管理库存的项目,以跟踪我们在学校拥有的材料。
此页面供教师输入借阅资料信息。我使用 datalabs.org 作为参考,现在我想添加其他功能。

我必须做的事情如下所示。

我有一个输入框供老师输入他们的名字。使用单元格 C7,SEARCH 将可用于查看 BORROW 和 RETURN 的所有历史目录,名称在 C7 中键入。我想做的是两件事。

FIRST:在A列中显示相应数量的复选框。例如,如果我在名称Ben下搜索4条日志,则A列中只会出现4个复选框。如果我在名称Bob下搜索10条日志,则会有10 A 列(日志旁边)中出现的复选框。我不知道如何使这成为可能....

第二:勾选复选框后,我希望勾选的行自动填充单元格 C9、C11 和 C13。为此,我还需要将 A 列的最大勾选框数限制为 1。

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: google-apps-script google-sheets checkbox triggers


【解决方案1】:

试试这个脚本:

function onEdit(e) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const sName = sheet.getName();

  if (sName === 'yourSheetName' && e.range.getColumn() === 2 && e.range.getRow() > 19) {
    const len = sheet.getRange('B20:B').getValues()
     .filter(row => row[0] != '').length;
    const range = sheet.getRange(20,1,len,1);
    sheet.getRange('A20:A').removeCheckboxes();
    range.insertCheckboxes().uncheck();
  }
}

!!不要更改函数名称。 !! 这是一个用于 google sheet apps 脚本的简单 onEdit 触发器。 它将监视任何编辑事件,如果正在编辑的工作表名为“yourSheetName”,并且编辑范围是 Column B 和 Row > 19,

该函数将首先删除 A20:A 中的所有复选框, 然后检查 B20:B 中的值并计算非空单元格的长度,并在 A20:A 应用相同数量的复选框。

您还可以修改此代码以使其适合您的搜索功能,而不是 onEdit 触发器,只需在每次触发搜索功能时运行它,这也是一种方法。

要在 C9、C11、C13 处显示所选数据,您不需要 appscript,在 googlesheet 中选中的复选框等于 TRUE,只需在三个单元格中放置一个 XLOOKUP 公式,在 A 列中查找真值,然后返回相关结果应该可以解决问题。

但是,您将需要一个ONEDIT扳机来保持列清洁,当将新行封装时,其他复选框需要不选中。

完成此操作的更简单方法是取消选中 A20:A 中的所有框并仅选中 event.range,结合第一个函数,将是这样的:

function onEdit(e) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const sName = sheet.getName();

  if (sName === 'yourSheetName' && e.range.getRow() > 19) {
    const len = sheet.getRange('B20:B').getValues().filter(row => row[0] != '').length;
    if (e.range.getColumn() === 2) {
      const range = sheet.getRange(20,1,len,1);
      sheet.getRange('A20:A').removeCheckboxes();
      range.insertCheckboxes().uncheck();
    }
    if (e.range.getColumn() === 1 && e.range.getValues()[0][0] === true) {
      sheet.getRange('A20:A').uncheck();
      e.range.check();
    }
  }
}

【讨论】:

  • 非常感谢你的回复。我已经尝试了你告诉我的代码,但它似乎不起作用。我可能需要更多地研究它才能弄清楚整件事的含义。另外,我已经尝试了 XLOOKUP 的方法,但我已经写下了一些应用程序脚本代码,可以自动将数据输入到 C9、C11 和 C13。其中,当这种情况发生时,所有最初输入的格式和功能似乎都消失了。我不知道如何使单元格的功能和格式永久保留在那里,因此,如果您知道答案,对此提供一点帮助也会很好。
  • “我不知道如何使单元格的功能和格式永久保留在那里”,简短的回答,你不能,但你可以使用应用程序脚本来处理这个问题,就像值一样,应用程序脚本也可以设置公式并格式化为给定的范围。
  • 惊人的!会马上尝试
猜你喜欢
  • 2022-11-29
  • 2023-03-23
  • 2021-08-08
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多