免责声明:我只是一个编码新手,我只是想在我的工作中实现自动化。
我想将数据从'数据输入'表复制到'数据输入'表中的单元格指定的另一个表。
下面是我使用的代码:
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数组,为了从某个单元格获得值,您只需要使用适当的数组索引来访问所需的元素(在这种情况下,
1
和19
,对应于T2
)。 - 使用map和slice来检索范围值的子集。您也可以直接检索相应的范围(例如
sourceSheet.getRange("L3:L").getValues().flat().filter(String)
),但是通过这种方式,您可以最大限度地减少对电子表格服务的调用量,这是一个很好的实践。