清除内容并从另一个工作表复制

fra*_*sta 2 google-sheets google-apps-script

我编写了一个脚本,旨在清除 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)
}
Run Code Online (Sandbox Code Playgroud)

Die*_*ego 7

你不应该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));
}
Run Code Online (Sandbox Code Playgroud)

使用该copyTo()功能,您只需关注目标中的第一个单元格。因此,您需要注意从“数据库”复制的数据不会超出 AC 列,否则您将覆盖“NEW_SHEET”中的数据。为了防止这种情况,您可以尝试var range = sh.getRange("A:AC")而不是复制整个数据范围。