将数据从一个电子表格复制到另一个onchange

时间:2018-09-24 18:08:54

标签: google-apps-script google-sheets triggers

请原谅我,因为我对此还很陌生,可能缺少一些简单的东西。

我有一个电子表格,我可以从模板创建数据,并在模板上运行脚本以创建成为用户任务的表单。表单中的编辑URL用于完成任务,并记录在主表(Sheet2)上,其中包含状态,附件,数据戳记和电子邮件地址。从那里,我试图创建一个任务列表,这些任务需要从我的主表到另一个电子表格上的另一个工作表(LOG)的批准,但是我的目标电子表格存在openByID问题。它说它是未定义的。我可以在同一电子表格中的工作表中使用它,但如果可能,我希望在其他电子表格中使用它。当状态更改为“是”且仅针对特定任务(“验证报告”,“维护备忘录”,“检查报告”)时,所有这些工作都在Sheet2的Change上完成

function onChange() {
  // moves a row from one sheet to another sheet when a value is entered in a column and another column has specific values
  var columnNumberToWatch = /* column D */ 4; // column A = 1, B = 2, etc.
  var valueToWatch = "yes";
  var sheetNameToMoveTheRowTo = "LOG";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var cell = sheet.getActiveCell();
  var activeRow = cell.getRow();
  var taskCheck=sheet.getRange(activeRow, 2);

  var target = SpreadsheetApp.openByID("my spreadsheet id");
  var targetSheet = target.getSheetByName(sheetNameToMoveTheRowTo);
  var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);


  if (sheet.getName() != sheetNameToMoveTheRowTo &&
      cell.getColumn() == columnNumberToWatch &&
      cell.getValue().toLowerCase() == valueToWatch && 
      (taskCheck.getValue() == "Verfication Report" || taskCheck.getValue() == "Maintenance Memo" || taskCheck.getValue() == "Check Report"))
  {
    sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
  }
}

0 个答案:

没有答案