【问题标题】:Can I limit an onEdit function to a checkbox cell in Google Sheets?我可以将 onEdit 函数限制为 Google 表格中的复选框单元格吗?
【发布时间】:2019-10-27 17:02:38
【问题描述】:

我正在 Google 表格中创建一个电子表格来收集和分析各个输入。这个想法是让用户在第一张表上输入数据,点击提交按钮,然后将其收集到另一张表中,同时清除第一张表输入。我用一个按钮想通了,但后来我才知道按钮在移动设备上不起作用,这将是主要的使用方法。

所以,我想知道是否有办法将“onEdit”功能限制为单个复选框。即我想在不关闭任何功能的情况下填写信息,然后当用户准备好时,单击复选框发送信息,然后将复选框设置为 false,并重置输入单元格。

这可能吗?

【问题讨论】:

  • 你想要达到的目标肯定是可能的,但可能不是你想要的。无论您编辑什么,onEdit 功能都会关闭;但是,您可以控制的是函数何时被处理 - 即您可以进行检查和平衡以确保 onEdit 函数中的代码仅在符合某些条件时才执行。这是一个例子 - stackoverflow.com/a/44874184/10713297

标签: function google-apps-script checkbox google-sheets google-apps-script-editor


【解决方案1】:

你可以使用这样的东西:

function onEdit(e) {
  if(e.range.getSheet().getName()=='Sheet8') {
    if(e.range.getA1Notation()=='A1' && e.value=="TRUE") {
      SpreadsheetApp.getUi().alert('You Clicked A1. You have less than 30 seconds to run a function here');
      e.range.setValue("FALSE");
      //you less than 30 seconds to run a function here
    }
    if(e.range.getA1Notation()=='A2' && e.value=="TRUE") {
      SpreadsheetApp.getUi().alert('You Clicked A2. You have less than 30 seconds to run a function here');
      e.range.setValue("FALSE");
      //you less than 30 seconds to run a function here
    }
    if(e.range.getA1Notation()=='A3' && e.value=="TRUE") {
      SpreadsheetApp.getUi().alert('You Clicked A3. You have less than 30 seconds to run a function here.');
      e.range.setValue("FALSE");
      //you less than 30 seconds to run a function here
    }
  }else{
    return;
  }
}

要使用它,您需要在 A1、A2 和 A3 中插入​​复选框。您可以按代码所示添加功能,但 onEdit(e) 必须在 30 秒内完成。

就个人而言,我会使用自定义对话框来完成您正在做的事情。这样,我有更多的选择,因为我拥有任何 html 页面的所有事件,根本不需要使用 onEdit()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多