[英]Google apps script select specific columns to upload into target sheet
Total beginner here.这里是初学者。 I am trying to select columns A,B,C from spreadsheet B which has around 40K rows and 25 columns, to spreadsheet A which is a blank document.
我正在尝试从具有大约 40K 行和 25 列的电子表格 B 中的 select 列 A、B、C 到作为空白文档的电子表格 A。 So, I have two spreadsheets.
所以,我有两个电子表格。 This code works fine but I want to select only the columns I need (columns including all the data, not just the headers).
这段代码工作正常,但我只想 select 我需要的列(列包括所有数据,而不仅仅是标题)。
function importdata() {
let ss = SpreadsheetApp.openById("ID"); //SPREADSHEET TO COPY FROM
let sheet = ss.getSheetByName("name"); //SHEET (TAB) TO COPY FROM
sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues();
let ssThis = SpreadsheetApp.getActiveSpreadsheet();
let sheetRawData = ssThis.getSheetByName("name"); //SHEET IN THE TARGET SPREADSHEET TO COPY TO
sheetRawData.getRange(1,1,sheetRawData.getLastRow());
}
Any idea as to how I can add this into the code above?关于如何将其添加到上面的代码中的任何想法? Many thanks!
非常感谢!
function importSelectedColumns() {
let selectedColumns = [1, 3, 5];
let ss = SpreadsheetApp.openById("ID"); //SPREADSHEET TO COPY FROM
let sheet = ss.getSheetByName("name"); //SHEET (TAB) TO COPY FROM
let ssThis = SpreadsheetApp.getActiveSpreadsheet();
let sheetRawData = ssThis.getSheetByName("name"); //SHEET IN THE TARGET SPREADSHEET TO COPY TO
selectedColumns.forEach(function(column){
let data = sheet.getRange(1,column, sheet.getLastRow(),1).getValues();
sheetRawData.getRange(1,column, sheet.getLastRow(), 1).setValues(data);
})
}
Explanation:解释:
I'd propose the native approach with range.copyTo(range)
:我建议使用
range.copyTo(range)
的本机方法:
function copy_cols() {
var cols = ['a', 'c', 'd', 'x']; // columns to copy
var ss = SpreadsheetApp.getActiveSpreadsheet();
var src_sheet = ss.getSheetByName('Sheet1'); // source sheet
var dest_sheet = ss.getSheetByName('Sheet2'); // destination sheet
for (var col of cols) {
var range = col + ':' + col; // a -> 'a:a', b -> 'b:b', etc
var src_range = src_sheet.getRange(range);
var dest_range = dest_sheet.getRange(range);
src_range.copyTo(dest_range);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.