javascript - 选中复选框时,Google Sheets 将行记录到另一张工作表(同一本书)

标签 javascript google-sheets google-sheets-formula

让我们从所有这些都将在同一本书中开始。我有 Sheet1 和 Sheet2。

Sheet1 包含多行。这些行在 D、E、F 列中具有复选框。

我正在尝试编写一个脚本,当选中复选框 F 时,它将把整行复制到 Sheet2 作为运行日志。我在一些我正在“玩弄”的脚本中使用了appendRow,但总是遇到麻烦。

我还看到了简单的公式,例如:(这不适用于我需要做的事情) [Copy over the row in another sheet when checkbox checked in Google Sheets

不记录。如果 Sheet1 中的行永远不会被删除,那就太好了。然而,这些行可能会不时被删除。因此,当选中 Sheet1 上的 F 时,我确实需要它来复制/记录到 Sheet2。

我已经在 Google 上搜索了好几天,但没有发现任何由特定单元格(或列中的单元格)触发的 Google 表格日志。

附注 我是“愚蠢的黑客”,用一些代码试图获得 onEdit 函数来检查 F。我对学习非常感兴趣:)

最佳答案

onEdit 是正确的选择

我建议您熟悉Google Apps Script允许您检测onEdit任一复选框已被选中(如果是 - 是哪一个)。 if 语句将帮助您copy数据,以防复选框位于感兴趣的列中。

在花费一些时间研究 Apps 脚本文档后,您可以根据自己的需要调整以下示例脚本:

function onEdit(){
  var ss=SpreadsheetApp.getActive();
  var sheet1=ss.getSheetByName("Sheet1");
  var sheet2=ss.getSheetByName("Sheet2");
  var cell=SpreadsheetApp.getActiveRange();
  if(SpreadsheetApp.getActiveSheet().getName()=="Sheet1" && cell.getColumn()==6 && cell.getValue() == true){
    Logger.log('bla');
    var row=cell.getRow();
    var range=sheet1.getRange(row,1,1,sheet1.getLastColumn());
    range.copyTo(sheet2.getRange((sheet2.getLastRow()+1),1));
  }
}

关于javascript - 选中复选框时,Google Sheets 将行记录到另一张工作表(同一本书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630780/

相关文章:

google-sheets - 返回排除另一个列表的唯一列表

javascript - 从 dom react 元素改变状态

google-sheets - Google 表格 - 文本的条件格式色标,而不是背景

javascript - 克隆时将数据记录到正确的 html 子元素

regex - 从字符串中提取数字-Google电子表格

regex - 尝试提取单元格中特定值之后的单词

google-apps-script - 如何使用公式在 Google 表格中的单元格中插入超链接?

Javascript 日志记录

javascript - window.close(), self.close() 不适用于 mozilla firefox

javascript - 正确嵌套 Redis 回调