将值设置为其他电子表格中的范围

时间:2018-08-14 02:57:36

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

任何人都可以提供有关如何在其他电子表格中更新或设置值的建议。我知道importRange函数会将值带到活动工作表中,但是我想将活动工作表中的单行数据“推”到位于不同电子表格中名为FinalData的工作表底部的一行。

我要“推送”的数据由其他代码填充,从而在名为TempData的工作表中产生一行数据。该数据存在于TempData!A2:U2范围内。

我的目标是将TempData!A2:U2中的数据追加到表“ DataFinal”底部的新行中,该表位于完全独立的google电子表格中(但在同一“ google驱动器”上。)< / p>

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

// 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});

运行该程序时,出现错误消息“目标范围和源范围必须在同一电子表格上”。必须有一种方法可以做到-任何建议都将受到欢迎。

1 个答案:

答案 0 :(得分:0)

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()this thread可能对您的情况有用。

参考文献:

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