首页 > 解决方案 > 选中复选框时,Google 表格将行记录到另一张表格(同一本书)

问题描述

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

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

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

我还看到了简单的公式,例如:(这不适用于我需要做的事情)[在 Google 表格中选中复选框时复制另一张表格中的行

不记录。如果 Sheet1 中的行永远不会被删除,那就太好了。但是,这些行可能会不时被删除。因此,当检查 Sheet1 上的 F 时,我真的需要它复制/记录到 Sheet2。

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

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

标签: javascriptgoogle-sheetsgoogle-sheets-formula

解决方案


onEdit是要走的路

我建议您熟悉Google Apps 脚本,该脚本允许您检测onEdit是否选中了一个复选框(如果是 - 是哪一个)。如果复选框位于感兴趣的列中,则if语句将帮助您复制数据。

在花费一些时间研究 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));
  }
}

推荐阅读