Google apps script 我需要将部分行的格式和值复制到不同工作表(相同电子表格)中的目标行,函数链接问题?

Google apps script 我需要将部分行的格式和值复制到不同工作表(相同电子表格)中的目标行,函数链接问题?,google-apps-script,copy,range,copy-paste,typeerror,Google Apps Script,Copy,Range,Copy Paste,Typeerror,尝试使用getActiveRange&getRow和具有指定范围的getRange复制行中的部分范围。我有一个更大的电子表格列表中的数据,需要从getRowIndex第4列、1行高、5列宽传输到下一个表进度报告,从冻结的标题开始。我需要在ProgressReport工作表的第4行上方添加一行,然后粘贴Listings工作表中定义范围的格式和值。由于getRange或getActiveRange为null,我一直收到一个TypeError。我已检查范围函数是否在活动单元格中有数据。我已经找到了一个

尝试使用getActiveRange&getRow和具有指定范围的getRange复制行中的部分范围。我有一个更大的电子表格列表中的数据,需要从getRowIndex第4列、1行高、5列宽传输到下一个表进度报告,从冻结的标题开始。我需要在ProgressReport工作表的第4行上方添加一行,然后粘贴Listings工作表中定义范围的格式和值。由于getRange或getActiveRange为null,我一直收到一个TypeError。我已检查范围函数是否在活动单元格中有数据。我已经找到了一个答案,它可能为我指明了正确的方向,它说可能存在错误,因为我使用的是链接在一起的getActiveRange和getRow函数,但是我尝试了太多的方法来操作它们,以至于我无法理解。 如果有任何帮助,我将不胜感激!!提前谢谢你!我整晚都在检查,因为这让我很烦

function onEdit() {
 var ss = SpreadsheetApp.getActiveSpreadsheet(); //sheet
 var sheet = ss.getSheetByName('Listings!'); //sheet
 var activeRange = sheet.getActiveRange().getRowIndex(); //range
   var pullRow = activeRange.getRowIndex(); //integer
   var copyFrom = activeRange.getRange(pullRow, 4, 1, 5);

 var targetSheet = ss.getSheet('ProgressReport!');
 var target = targetSheet.getRange(4, 1, 1, 5);
// where PREntry = First row under the frozen header

   targetSheet.insertRowsBefore(4, 1);
// This inserts 1 row after the first row (insertAfterRow#, #ofRows)

    pullFrom.copyTo(copyFrom, target);
// where (activeRange) = (edited row in listings)
}
我试着从另一个角度去改变它;我一直到最后一行,有一个类型错误:在对象xyz//中找不到函数copyTo,其中xyz只是填充我正在测试的单元格的测试数据。 以下是我正在尝试的新代码:

function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
var rowStart = range.getRowIndex();
// where getRow retrieves the entire row that has been edited and getRowIndex retrieves the integer for later getSheetValues (below)
  var rangeColumn = sheet.getRange("D5:H5");
  var columnStart = rangeColumn.getColumn();
  var activePartialRow = sheet.getSheetValues(rowStart, columnStart, 1, 5);
// where the partial row is defined by activePartialRow using the integers returned by "columnStart" & "rowStart" vars
    var targetSheet = ss.getSheetByName("ProgressReport");

   targetSheet.insertRowBefore(4);
// This inserts 1 row after the fourth row (insertAfterRow#, #ofRows)

var target = targetSheet.getRange(4, 1, 1, 5);
// where the target is the first row under the frozen header

   activePartialRow.copyTo(target);
// where (activeRange) = (edited row in listings)
}

如果有人能回答这个问题,我将不胜感激!我在网上搜索过,但似乎找不到任何我正在搜索的东西!提前非常感谢-JH

只需更改代码中的这一行:

  var activePartialRow = sheet.getRange(rowStart, columnStart, 1, 5);
  // use getRange because we want to get a range object for copyTo()
但除此之外,您的代码可以简化一点

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getActiveRange();
  var rowStart = range.getRowIndex();
  // where getRow retrieves the entire row that has been edited and getRowIndex retrieves the integer for later getSheetValues (below)
  var activePartialRow = sheet.getRange(rowStart, 4, 1, 5);// use getRange because we want to get a range object for copyTo()
  // where the partial row is defined by activePartialRow using the integers returned by "columnStart" & "rowStart" vars
  var targetSheet = ss.getSheetByName("ProgressReport");

  targetSheet.insertRowBefore(4);
  // This inserts 1 row after the fourth row (insertAfterRow#, #ofRows)

  var target = targetSheet.getRange(4, 1, 1, 5);
  // where the target is the first row under the frozen header

  activePartialRow.copyTo(target);
  // where (activeRange) = (edited row in listings)
}

当您尝试在从未使用过值的行中创建一个get范围时,您会得到以下类型的错误。请在检查之前检查行数。您也可以使用appendRow而不是CopyTake br araujo,因此如果我理解正确,我需要首先用信息填充感兴趣的单元格,然后在将其更改为appendRow后运行脚本,这样我就可以删除插入顶部行的行,然后脚本应该可以正常运行?是的,就是这样。只需添加行。非常感谢!实际上,我通过执行AppendRowContents,然后执行日期列的降序时间排序来修复它。但现在我要把它改回去,因为如果有人把日期弄错了,它就不会在“对不起”专栏中发现错误,我会仔细检查所有内容以找到它。再次感谢,如果解决方案不起作用,我会编辑这篇文章!圣诞快乐!这工作做得很好!我想问题是,正如你所说,我没有在我的原始代码行中正确定义要复制的范围。