简体   繁体   English

谷歌应用脚本 select 特定列上传到目标表

[英]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!非常感谢!

You can create an array of selected columns and get / set the values for the ranges corresponding to those columns:您可以创建一个选定列的数组并获取/设置与这些列对应的范围的值:

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.

相关问题 Google Apps脚本选择具有特定列的特定行 - Google apps script select specific rows with specific columns Google Apps 脚本,选择工作表 - 在第一个工作表标签中设置值 - 不是特定的工作表标签 - Google Apps Script, select a sheet - Sets values in first sheet tab - not a specific sheet tab Google Apps 脚本从工作表中提取特定列并使用过滤器和 map 放入新工作表 — 慢 - Google Apps Script extract specific columns from sheet and put into new sheet using filter & map — slow Google Apps 脚本 - 格式化特定工作表中的列 - Google Apps Script - Format Column in Specific Sheet 将源工作表中的数据与目标工作表进行比较,并使用 Google Apps 脚本将缺失的行复制到目标工作表 - Compare data in source sheet with target sheet and copy missing rows to target sheet with Google Apps Script 使用 Google 应用脚本在 Google 表格中上传 PDF 文件 - Upload PDF file in Google sheet using Google apps script 需要从 Google Apps 脚本查询 Google 表格以获取特定数据 - Need to Query Google Sheet for specific data from Google Apps Script 使用Google Apps脚本从Google表格打印选择表格 - Printing select sheets from google sheet with Google Apps Script 谷歌应用程序脚本:谷歌表格中的 select 下拉列表 - google apps script : a select drop down list in google sheet Google Apps脚本-sheet.getDataRange()。getValues(); 列作为对象 - Google Apps Script - sheet.getDataRange().getValues(); columns as objects
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM