我知道之前已经完成了这项工作,但我努力让自己的工作得以实现,我想要从工作表中复制所有数据'模板'到历史'片。
我想在历史记录表底部的新行中发送值。
这是我的工作代码,我只需要更改值的设置位置。
var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');
var getRange = sheetTemplate.getDataRange();
var DataCopied = SRange.getValues();
sheetHistory.getRange("a2:F7").setValues(DataCopied);
答案 0 :(得分:1)
您正在使用getDataRange()和getValues()方法,这将返回二维数组中存在数据的相应值,因此当您将值复制到新工作表时setValues()您需要考虑所检索数据的维度,以便它们匹配,您需要:
DataCopied
DataCopied.length
数组(行数)的“高度”
DataCopied
数组(列数)DataCopied[0].length
的“宽度”。DataCopied
的值
醇>
您的代码应如下所示:
function myFunction(){
var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');
var getRange = sheetTemplate.getDataRange();
var DataCopied = getRange.getValues();
// I defined the variables for better understanding
var startRow = sheetHistory.getLastRow()+1; // +1 because remember that while a range index starts at 1, 1, the JavaScript array will be indexed from [0][0].
var startColumn = 1;
var numRows = DataCopied.length;
var numColumns = DataCopied[0].length;
sheetHistory.getRange(startRow, startColumn, numRows, numColumns).setValues(DataCopied);
}