在 Google 表格中,如何将基于特定列值的行复制到新选项卡中,然后将复选框附加到该行?

In Google Sheets, how can I copy a row based on a specific column value into a new tab, and then append checkboxes to the row?

我正在尝试编写一个脚本,允许我根据特定的单元格值将一行复制到新选项卡中。在这种情况下,它是一个设置为 TRUE 的复选框。

我可以根据单元格值将行复制到新的 sheet,但现在我不确定如何使用 insertCheckboxes 将 5 个复选框附加到在新 sheet.

中复制行

这是我目前的代码:

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Client Database" && r.getColumn() == 9 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Referrals");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);
}
}

第 9 列包含复选框,当设置为 true 时,会将行从“客户数据库”复制到我的新选项卡(“推荐”)。

我正在为两件事挠头:

非常感谢任何建议。

复选框

添加到您的脚本

var checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
targetSheet.getRange(targetRow,3,1,4).setDataValidation(checkbox).setValue("FALSE");

其中 targetRow 是行,targetSheet sheet 您复制的地方

代码

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if (s.getName() == "Client Database" && r.getColumn() == 9 && r.getValue() == true) {
    var row = r.getRow();
    var targetSheet = ss.getSheetByName("Referrals");
    targetSheet.insertRowBefore(2)
    var targetRow = 2
    targetSheet.getRange(targetRow,1).setValue(s.getRange(row,1).getValue())
    targetSheet.getRange(targetRow,2).setValue(s.getRange(row,4).getValue())
    var checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
    targetSheet.getRange(targetRow,3,1,4).setDataValidation(checkbox).setValue("FALSE");
  }
}