我编写了一个脚本,旨在清除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)
}
答案 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")
而不是复制整个数据范围。