Google 脚本 - 提交谷歌表单后根据单元格值将行移动到特定工作表

问题描述 投票:0回答:1

我正在寻找一个代码,允许我将一行从表单响应移动到特定的工作表。我知道这可以通过过滤器和公式来完成,但这对我不起作用,因为这将在将来由第三个人编辑。

我有一个代码可以将一行从一行移动到另一行,但仅在更改完成( onedit )+下拉列表时触发,其他方式不起作用。

  function Move_New_Data(e) {
    var source = e.source.getActiveSheet();
    var range = e.range;
    var col = range.getColumn();
    var row = range.getRow();
    var val = range.getValue();

    if (col == 2 && val != ''){

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName(source.getName());
      var targetsheet = ss.getSheetByName(val);
      var data = sheet.getRange(row,1,1,sheet.getLastColumn()).getValues();
      targetsheet.appendRow(data[0]);
      sheet.deleteRow(row);
    }
  }

我可以在此处更改任何内容,以使其通过提交谷歌表单来工作并自动移动吗?

代码需要将基于单元格 2 的整行移动到特定工作表,例如:第 2 列将显示 A,然后代码会将整行从表单响应移动到名为 A 的工作表。

谢谢您的帮助。

google-apps-script
1个回答
0
投票

这意味着与电子表格的 onFormSubmit 触发器一起运行

function onMyFormSubmit(e) {
  Logger.log(JSON.stringify(e));
  e.source.toast("Entry");
  const sh = e.range.getSheet();
  if (e.range.columnStart == 2 && e.value != '') {
    e.source.toast("Gate1")
    var tsh = e.source.getSheetByName(e.range.getValue());
    var data = e.values.slice(1);
    tsh.appendRow(data);
    sh.deleteRow(e.range.rowStart);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.