【问题标题】:Google script : Copy and paste value from one sheet to new sheet when row is being added in certain column (different sheet)Google脚本:在特定列(不同的工作表)中添加行时,将值从一张工作表复制并粘贴到新工作表
【发布时间】:2023-01-15 02:29:01
【问题描述】:

当在某些工作表 (Sheet12) 中添加一行时我遇到错误,然后将触发函数将工作表 ("CustomerDatabase") 移动到新工作表 ("Final")。

这是谷歌脚本:

function onEdit(e) {
  var range = e.range;
  var spreadSheet = e.source;
  var sheetName = spreadSheet.getActiveSheet().getName();
  var column = range.getColumn();
  var row = range.getRow();
  if (sheetName == 'Sheet12' && column == 1)
    var prevNumRows = sheetName.getLastRow();
  if (row > prevNumRows) {
    var sourceSheet = SpreadsheetApp.getActive().getSheetByName("CustomerDatabase");
    var sourceRange = sourceSheet.getRange("B:J");
    var sourceValues = sourceRange.getValues();
    var destinationSheet = SpreadsheetApp.getActive().getSheetByName("Final");
    var destinationRange = destinationSheet.getRange("A:I");
    destinationRange.setValues(sourceValues);
  }
}

我是 google script 的新手,不确定是什么导致脚本出错。如果有人可以帮助解决此错误,我将不胜感激。

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,来自I'm encountering error when a row is being added in certain sheet(Sheet12) then function will be triggered to move a sheet("CustomerDatabase") to new sheet("Final").,我无法理解您当前的问题和您的目标。我可以问一下他们的详细情况吗?
  • 顺便说一下,在您的脚本中,sheetName 是一个字符串值。这样,var prevNumRows = sheetName.getLastRow();就会出错,因为getLastRow()是Class Sheet的方法。请注意这一点。而且,如果您想将prevNumRows用作“Sheet12”的getLastRow(),我担心row > prevNumRows可能总是false。如果我误解了您的脚本,我为此深表歉意。所以,我想正确理解你的预期结果。

标签: google-apps-script google-sheets


【解决方案1】:
function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName("Sheet1"); // replace with the name of the source sheet
  var targetSheet = ss.getSheetByName("Sheet2"); // replace with the name of the target sheet
  var columnToWatch = 3; // column to watch for new rows, starting from 1
  var valueToCopy = e.range.getValue();
  var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1);

  if (e.range.getSheet().getName() == sourceSheet.getName() && e.range.getColumn() == columnToWatch) {
    targetRange.setValue(valueToCopy);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多