如何将光标选择范围复制到其他工作表

时间:2019-06-19 10:31:04

标签: google-apps-script google-sheets

我正在尝试创建一个脚本,该脚本会将光标选择范围复制到另一个工作表,该脚本部分起作用

脚本正在处理一些值,其中一些是从目标工作表中选择的值

     function copy(){

   var sh = SpreadsheetApp.getActiveSheet();
   var ss = SpreadsheetApp.getActiveSpreadsheet(); 
   var range = ss.getActiveRange();
   var srange = range.getA1Notation();
   var crange= ss.getRange(srange);
   var data = crange.getValues();



  var tss = SpreadsheetApp.openById('id');
  var ts = tss.getSheetByName('Tracker'); 
  ts.getRange('B16:K200').setValue(data)

}

脚本应使用鼠标从目标工作表指定位置的选定工作表中复制选定的值

1 个答案:

答案 0 :(得分:0)

关键是识别活动范围以及相关的获取行和列值。然后,以“ B16”为起点,您只需添加从活动范围计算的行数和列数即可。

突出显示任何范围,运行该函数,范围的内容将被复制到同一张图纸的左上角,单元格为“ B16”。

修改代码以创建输出范围并将值复制到另一个电子表格很简单。


function so5666559701() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "56665597";
  var sheet = ss.getSheetByName(sheetname);
  var myrange = sheet.getActiveRange();
  var myvalues = myrange.getValues();
  //Logger.log("DEBUG: the active range = "+myrange.getA1Notation());
  var myfirstRow = myrange.getRow();
  var mylastRow = myrange.getLastRow();
  var myfirstCol = myrange.getColumn();
  var mylastCol = myrange.getLastColumn();
  //Logger.log("DEBUG: details of the selectred range: row: first row="+myfirstRow+", first column="+myfirstCol+", last row="+mylastRow+" last column:"+mylastCol);

  // target cell = B16 = row 16, column 2
  var targetrange = sheet.getRange(16,2,mylastRow-myfirstRow+1,mylastCol-myfirstCol+1);
  //Logger.log("DEBUG: the target range = "+targetrange.getA1Notation());
  targetrange.setValues(myvalues);
}