【问题标题】:Insert Copied Cells插入复制的单元格
【发布时间】:2018-02-20 17:21:48
【问题描述】:

我的目标是创建一个类似于 Excel 的插入复制单元格的应用程序脚本功能。我想用鼠标输入动态选择粘贴复制范围的位置,类似于在 =sum(Mouse Selection) 公式中选择单元格的方式。

请帮助我了解如何使用鼠标选择范围,以便将复制的行粘贴到正确的位置。

function insertCopiedCells() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
 var copyRange = spreadsheet.getActiveRange();
 var copyRangeRows = copyRange.getNumRows();

 // This is where I want to select the range with a mouse selection

 var pasteRange = spreadsheet.getRange(rangeSelection);
 var pasteRangeRow = pasteRange.getRow();
 pasteRange.activate();
 spreadsheet.insertRowsBefore(pasteRangeRow, copyRangeRows);
 copyRange.copyTo(pasteRange);
}

【问题讨论】:

  • 你想在那里粘贴什么?
  • 我正在粘贴一系列当前选中的单元格。我希望能够复制电子表格中任何范围的单元格。为了测试,我从电子表格中的工作表中选择了第 21 到 64 行。
  • 所以您希望用户在运行脚本时,在编写公式后,可以手动选择粘贴它们的位置?
  • 我希望用户选择他们想要复制的内容,运行脚本,手动选择他们想要粘贴的位置。该脚本将根据需要插入行,然后将信息粘贴到添加的行中。

标签: google-apps-script google-sheets


【解决方案1】:

你会需要这样的:

function insertCopiedCells() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
 var copyRange = spreadsheet.getActiveSheet().getActiveRange();
 var data = copyRange.getValues();

 // This is where I want to select the range with a mouse selection
 var cell = Browser.inputBox('Enter the cell address');

 var pasteCell = spreadsheet.getRange(cell)
 var h = data.length;
 var l =  data[0].length;

 spreadsheet.insertRowsBefore(pasteCell.getRow(), h)
 var pasteRange = pasteCell.offset(0, 0, h, l);
 pasteRange.setValues(data);
}

从自定义菜单启动它:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Menu')
      .addItem('Copy Selected', 'insertCopiedCells')
      .addToUi();
}

【讨论】:

  • Max,我特别希望能够通过鼠标选择来选择粘贴范围,而不是在输入框中键入它们。该选项是否有不同的输入框?
  • 也许,我错过了。这是参考:base/prompt-responsebase/browser。 Google Apps 脚本中没有这样的选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多