如何使用Google工作表脚本从一个工作表复制数据范围到另一个工作表



免责声明:我只是一个编码新手,我只是想在我的工作中实现自动化。

我想将数据从'数据输入'表复制到'数据输入'表中的单元格指定的另一个表。

下面是我使用的代码:

function DataEntry() {
let spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
let sourceSheet = spreadSheet.getSheetByName('Data Entry');
let sourceRange = sourceSheet.getDataRange();
let sourceValues = sourceRange.getValues();
let rowCount = sourceValues.length();
let columnCount = sourceValues[0].length();
let targetSheet = spreadSheet.getSheetByName('6');
let targetRange = targetSheet.getRange(2,1,rowCount,columnCount);
targetRange.setValues(sourceValues);
}

在源表中,我想复制从第3行l列开始的数据(每个数据批的行数不同)

然后在目标工作表中,这将由源工作表中的单元格(单元格T2)指定。粘贴应该从第二行a列开始。

function DataEntry() {
let spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
let sourceSheet = spreadSheet.getSheetByName('Data Entry');
let sourceRange = sourceSheet.getDataRange();
let sourceValues = sourceRange.getValues();
let sheetName = sourceValues[1][19];
sourceValues = sourceValues.slice(2).map(row => row.slice(11));
let rowCount = sourceValues.length;
let columnCount = sourceValues[0].length;
let targetSheet = spreadSheet.getSheetByName(sheetName);
let targetRange = targetSheet.getRange(2,1,rowCount,columnCount);
targetRange.setValues(sourceValues);
}

解释:

  • 由于getValues()返回一个2D数组,为了从某个单元格获得值,您只需要使用适当的数组索引来访问所需的元素(在这种情况下,119,对应于T2)。
  • 使用map和slice来检索范围值的子集。您也可以直接检索相应的范围(例如sourceSheet.getRange("L3:L").getValues().flat().filter(String)),但是通过这种方式,您可以最大限度地减少对电子表格服务的调用量,这是一个很好的实践。

相关内容

最新更新