javascript - 谷歌应用脚​​本: onEdit

标签 javascript google-apps-script google-sheets

首先,我是一个初学者。我试图在 Google 表格中进行一些自动化操作,但遇到了一个有趣但可能愚蠢的问题:如果更改另一个特定单元格中的值,如何删除唯一单元格或单元格组的内容?如果我更改单元格 A1 的值,我只想删除单元格 B1 中写入的内容。无论单元格 C1、C2、B2 或 A2 上发生什么,唯一重要的触发器是编辑单元格 A1。

我尝试通过使用 onEdit(e) 事件来解决这个问题,但返回的参数“e”不包含任何有关我可以用于比较的列或行的信息,即发现该版本是针对单元格 A1 进行的。这样,我没有找到任何可以用来解决我的问题的具体条件。

我的代码是:

function onEdit(e) {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = e.range;
  if (range == 'A1'){
    spreadsheet.getRange('B1').activate();
    spreadsheet.getActiveRangeList().setValue("");
    spreadsheet.getRange('A1').activate();
  }
}

正如我所注意到的,“range”永远不会等于“A1”,因为无论我编辑哪个单元格,e.range 方法都会返回“Range”:当我写入“potato”后代码返回 e 的值时在单元格中,这就是屏幕上显示的内容:

{ value=potato, authMode=LIMITED, range=Range, user=, source=Spreadsheet }

还有其他方法可以使用 onEdit 函数来完成我的这项任务吗?或者我应该使用另一个事件?有什么建议吗?

这是启发我使用 onEdit 函数的代码(它工作得很好):

function onEdit(e) {
   // Set a comment on the edited cell to indicate when it was changed.
   var range = e.range;
   range.setNote('Last modified: ' + new Date());
}

最佳答案

同样的事情,用更少的函数调用大多数信息来自事件对象

function onEdit(e) {
  if(e.range.columnStart==1 && e.range.rowStart==1) {//same as A1
    e.range.offset(0,1).setValue('');//this is B1
  }
}

关于javascript - 谷歌应用脚​​本: onEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66215630/

相关文章:

javascript - 基于Javascript元素根据位置获取元素节点

javascript - 数组循环中的 AJAX 调用,仅在前一个完成后调用下一个

javascript - C# DateTime - 使用 fullcalendar.io 处理时区的最佳方法?

jquery - 多次调用 google.script.run.withSuccessHandler

java - 无法打开使用 jOpenDocument 创建的 ODS 文档 Google 文档

Javascript 复选框函数 : "missing : after property id"

google-apps-script - 如何在特定单元格的值更改时自动将数据添加到另一个工作表?

html - 如何使用 JDBC 和 Google-App-Script 为多个查询保持连接?

ios - 安装 GoogleData API 以使用表格

javascript - 如何使用谷歌应用程序脚本设置谷歌表单中项目的父级?