【问题标题】:Google Sheets: Append then Delete rows based on Tickbox conditionGoogle 表格:根据复选框条件追加然后删除行
【发布时间】:2023-02-10 03:48:04
【问题描述】:

我正在尝试创建一个电子表格来组织在我的工作场所订购的产品。

收到订单后,团队成员会将详细信息添加到工作表中;取货时,他们会填写日期和 ID,然后勾选订单完成。 See Attached
接下来我想要发生的是包含该订单的完整详细信息的行附加到工作表中的第二页,并删除原始行。

我不知道如何让它在选中该框时自动运行;到目前为止,我一直在编译脚本以通过按下按钮运行:

function runFiling() {
  function moveRows() {
  var ss = SpreadsheetApp.getActive();
  var osh = ss.getSheetByName('Current');
  var dsh = ss.getSheetByName('Collected');
  var srg = osh.getDataRange('H2:H');//You might want to specify a more unique range. This just gets all of the data on the sheet
  var svA = srg.getValues();
  var d=0;//deleted row counter
  for(var i=1;i<svA.length;i++) {
    if(svA[i][7] =='TRUE') {
      dsh.appendRow(svA[i]);//append entire row to Sheet2
      osh.deleteRow(i-d+1);//accounts for the difference between length of array and number of remaining row.
      d++;
    }
  }
}
}

然而,即使没有发现/返回错误,也无法添加或删除任何内容。

如果有人可以建议解决上述问题的方法,或者最好是在勾选该框时如何使脚本工作,我们将非常感谢您的帮助。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    使用 onEdit(e) 函数以这种方式尝试

    function onEdit(e) {
      const sh = e.range.getSheet();
      if (sh.getName() == 'Current' && e.range.columnStart == 7 && e.range.rowStart > 1 && e.value == "TRUE") {
        const dsh = ss.getSheetByName('Collected');
        const vs = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).getValues()
        dsh.getRange(dsh.getLastRow() + 1, 1, vs.length, vs[0].length).setValues(vs);
        sh.deleteRow(e.range.rowStart);
      }
    }
    

    当用户选中复选框时,这将逐行完成任务。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 2022-10-14
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多