用于将更改范围复制到单元格B2的脚本



我正试图编写一个脚本,将一系列单元格复制到单元格B2。要从中复制的范围每次都会更改,因此希望突出显示左上角的单元格,然后脚本从那里获取它。到目前为止,我拥有的是:

function CopyToB2() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var cellRange = sheet.getActiveCell();
var selectedColumn = cellRange.getColumn();
var selectedRow = cellRange.getRow();
var range = SpreadsheetApp.getActiveSheet().getRange(selectedColumn,selectedRow,2,43);
range.setValues(range);
spreadsheet.getRange('B2').activate();
(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

但是得到错误

异常:参数(SpreadsheetApp.Range(与SpreadsheetApp.Range.setValues 的方法签名

解释:

  • 代码的主要问题是在setValues函数中传递了一个range对象,因此会出现此错误。

  • 第二个问题是,您以错误的顺序传递了getRange函数的参数(row,column,numRows,numColumns(。应该是:

    getRange(selectedRow,selectedColumn,43,2)
    

而不是getRange(selectedColumn,selectedRow,2,43)

  • 第三个问题是,您需要定义数据将粘贴到的范围,在这种情况下,不能只是一个单元格B2。您需要做的是将B2定义为粘贴范围的开始,然后设置活动范围的值

解决方案:

function CopyToB2() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var cellRange = sheet.getActiveCell();
var selectedColumn = cellRange.getColumn();
var selectedRow = cellRange.getRow();
var dataRange = sheet.getRange(selectedRow,selectedColumn,43,2).getValues();
sheet.getRange(2,2,dataRange.length,dataRange[0].length).setValues(dataRange);
};

相关内容

  • 没有找到相关文章

最新更新