将值设置为不同电子表格中的范围

Set values to ranges in a different spreadsheet

任何人都可以提供有关如何更新值或将值设置为不同价差的范围的建议sheet。我知道 importRange 函数会将值带入活动 sheet,但我想 "push" 来自活动 sheet 的单行数据到 [=27] 底部的一行=] 称为 FinalData,它处于不同的分布sheet。

我想要 "push" 的数据由其他代码填充,导致 sheet 中的单行数据称为 TempData。数据存在于 TempData!A2:U2 范围内。

我的目标是将来自 TempData!A2:U2 的数据附加到名为 "DataFinal" 的 table 底部的新行中,该行位于完全独立的 google 传播中sheet(但在同一个"google drive"。)

这是我到目前为止尝试过的方法:

// Row to FinalData
   var ss = SpreadsheetApp.getActiveSpreadsheet ();

   var startSheet = ss.getSheetByName("TempData");

   var sourceRange = ss.getRange ("TempData!A2:U");

   var target = SpreadsheetApp.openById("1bWKS_Z1JwLSCO5WSq1iNP1LLQpVXnspA4WkzdyxYDNY");

   var targetSheet = target.getSheetByName("DataFinal");

   var lastRow = targetSheet.getLastRow();

   targetSheet.insertRowAfter(lastRow); 

   sourceRange.copyTo(targetSheet.getRange(lastRow + 1,1), {contentsOnly: true});

当我 运行 时,我得到一个错误 "Target range and source range must be on the same spreadsheet."。一定有办法做到这一点 -- 欢迎提出任何建议。

copyTo() 可用于同一个电子表格。

根据您的脚本,我认为您可以使用 getValues()setValues() 来实现它,因为您使用 contentsOnly: true。那么这个修改怎么样呢?

发件人:

sourceRange.copyTo(targetSheet.getRange(lastRow + 1,1), {contentsOnly: true})

收件人:

var sourceValues = sourceRange.getValues();
targetSheet.getRange(lastRow + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);

注:

  • 如果您想使用 copyTo() 可能对您的情况有用。

参考资料:

如果这不是您想要的,请告诉我。我想修改一下。