应用程序脚本清除内容并从其他工作表复制

时间:2018-04-03 11:18:01

标签: google-apps-script google-sheets

我编写了一个脚本,旨在清除Google表格电子表格的内容,并复制并粘贴其他表格的内容。

需要清算的工作表被称为" NEW_SHEET"并且要复制的那个被称为"数据库"。

由于某种原因,脚本目前无法正常工作。我跑的时候什么都没发生。 此外,目前,我正在使用.getActiveRange来选择要清除的范围。但是,我希望它是A到AC的列,而且只有最后一行包含数据。

这是我正在使用的代码:

function importDB() {
  //Delete content of New Sheet
  var sh1 = SpreadsheetApp.openById('SHEET_ID').getSheetByName('NEW_SHEET')
  var range1 = sh1.getActiveRange()
  range1.clearContent()

  //Copy new database data
 var sh = SpreadsheetApp.openById('SHEET_ID').getSheetByName('Database')
   var range = sh.getDataRange();  
   var data = range.getValues();
   var ts = SpreadsheetApp.openById('SHEET_ID').getSheetByName('NEW_SHEET')
   ts.setValues(data)
}

1 个答案:

答案 0 :(得分:2)

你不应该在这里使用getActiveRange()。下面的代码应该有效。

function importDB() {
  //Delete contents of "A:AC" in New Sheet
  var sh1 = SpreadsheetApp.openById('SHEET_ID').getSheetByName('NEW_SHEET').getRange("A:AC");
  sh1.clearContent();

  //Copy new database data
  var sh = SpreadsheetApp.openById('SHEET_ID').getSheetByName('Database');
  var range = sh.getDataRange();  
  range.copyTo(sh1.getCell(1,1));
}

使用copyTo()功能,only the first cell in the destination matters。因此,您需要注意从"数据库"中复制的数据。不会超过列AC,否则您将覆盖" NEW_SHEET"中的数据。为了防止这种情况,您可以尝试var range = sh.getRange("A:AC")而不是复制整个数据范围。

相关问题