Google Apps脚本会将数据附加到新电子表格中

时间:2015-03-26 22:33:35

标签: google-apps-script google-sheets

我有一个电子表格" X"我将每天一次从第2行备份到表单末尾的数据收集到另一个现有的电子表格中#34; Y"将它追加到最后。我也想删除电子表格中的现有条目" X"从第2行开始。基本上是电子表格" X"将是累积的电子表格,并考虑我的备份。我的电子表格做的最多,除了它添加到电子表格的顶部" Y",它没有附加,它只是覆盖,所以我看着CopyTo或AppendRow函数,并希望一些人建议如何纠正。

function myFunction() {

  function getDate(){
  var d = new Date();
  var dateofDay = new Date(d.getTime());
  return Utilities.formatDate(dateofDay, "GMT+2", "MM-dd-yyyy hh:mmm:ss z");
  }

  //get the date from current Spreadsheet
  var ss = SpreadsheetApp.getActiveSheet();
  var dataRange = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn());
  var myData = dataRange.getValues();
  //Open new Spreadsheet & paste the data
newSS = SpreadsheetApp.openById("abcdefg");
newSS.getActiveSheet().getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).setValues(myData);
  //Clear the original sheet except header row
  ss.deleteRows(2, ss.getLastRow()-1);

}

3 个答案:

答案 0 :(得分:1)

请插入以下代码

newSS.getActiveSheet().insertRows(1, myData.length);

在此之前:

newSS.getActiveSheet().getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).setValues(myData);

希望能帮到你。

答案 1 :(得分:0)

这是因为在第二个电子表格中,您要在此代码行中设置范围[1,1]到[lastrow,lastcolumn]的值。

newSS.getActiveSheet().getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).setValues(myData);

相反,您必须取该表的最后一行并从lastrow + 1添加行。

有关更多参考检查here。希望有所帮助!

答案 2 :(得分:0)

只需将源电子表格的范围更改为

即可

var dataRange = ss.getRange(2, 1, ss.getLastRow(), ss.getLastColumn());

然后将目标电子表格的范围更改为

newSS.getActiveSheet().getRange(newSS.getLastRow()+1, 1, ss.getLastRow(), ss.getLastColumn()).setValues(myData);

这是工作代码

function myFunction() {

 function getDate(){
 var d = new Date();
 var dateofDay = new Date(d.getTime());
 return Utilities.formatDate(dateofDay, "GMT+2", "MM-dd-yyyy hh:mmm:ss z");
 }

 //get the date from current Spreadsheet
 var ss = SpreadsheetApp.getActiveSheet();
 var dataRange = ss.getRange(2, 1, ss.getLastRow(), ss.getLastColumn());
 var myData = dataRange.getValues();
 //Open new Spreadsheet & paste the data
newSS = SpreadsheetApp.openById("1Y2KsVsNaq_-3FvFhx1J8ac5uthl4Wk0kg9hKkVp-Q8Y");
Logger.log(newSS.getLastRow());
newSS.getActiveSheet().getRange(newSS.getLastRow()+1, 1, ss.getLastRow(), ss.getLastColumn()).setValues(myData);
//Clear the original sheet except header row
ss.deleteRows(2, ss.getLastRow()-1);
}