【问题标题】:Google Sheets Log row to another sheet (same book) when checkbox checked选中复选框时,Google 表格将行记录到另一张表格(同一本书)
【发布时间】:2020-04-25 02:23:06
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: javascript google-sheets google-sheets-formula


    【解决方案1】:

    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));
      }
    }
    

    【讨论】:

    • 是的,这太棒了。我从你写的剧本中学到了很多。事实上,它很容易编辑,而且功能完美。我知道要使用其中的一些功能,但你真正帮助我的是“if”语句。我非常感谢,你为我赢得了这一天。 :) 再次感谢!
    • 不客气,很高兴对你有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多