Google电子表格-将“ Ctrl + V”视为“ Ctrl + Shift + V”

时间:2019-12-25 06:39:32

标签: google-apps-script google-sheets

是否可以为电子表格定义将“ Ctrl + V”(常规粘贴)视为“ Ctrl + Shift + V”(仅粘贴值)?不仅对我自己,对于任何可以编辑的用户。

原因:所涉及的电子表格中包含数据验证,格式设置和条件格式设置。用户在此电子表格中大量使用“ Ctrl + V”,因此这些设置经常被篡改

2 个答案:

答案 0 :(得分:1)

  

没有直接的方法可以实现,但是作为解决方法,您可以   将具有以下内容的Apps脚本附加到电子表格   功能:

  • 该脚本包含一个onEdit()函数,该函数会在每次对工作表进行编辑(例如粘贴)时自动触发
  • 它会检测到已编辑的有效范围
  • 仅使用值覆盖活动范围的内容

示例:

function onEdit(){
  var spreadsheet = SpreadsheetApp.getActive();
  var activeRange=spreadsheet.getActiveRange();
  activeRange.setValues(activeRange.getValues());
}

更新

如果您想从模板中粘贴onEdit的格式,条件格式和已编辑范围的数据验证-您可以使用方法copyTo(destination, copyPasteType, transposed)相应地将copyPasteType具体化。

示例:

function onEdit(){
  var spreadsheet = SpreadsheetApp.getActive();
  var activeRange=spreadsheet.getActiveRange();
  var A1Notation=activeRange.getA1Notation();
  var templateRange=SpreadsheetApp.openById('ID OF THE TEMPLATE SPREADSHEET').getSheetByName('NAME OF THE TEMPLATE SHEET').getRange(A1Notation);
  templateRange.copyTo(activeRange, spreadsheetApp.CopyPasteType.PASTE_FORMAT);
  templateRange.copyTo(activeRange, spreadsheetApp.CopyPasteType.PASTE_CONDITIONAL_FORMATTING);
  templateRange.copyTo(activeRange, spreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION);
}

答案 1 :(得分:0)

我很高兴地通知您,我已达到以下目标:

  1. 创建模板电子表格的副本,以仅用作设计设置模板。
  2. 将相关模板表从设计设置模板Ss复制到目标电子表格(同时保持隐藏状态)。这是通过copyTo of class Sheet完成的。
  3. 从模板工作表复制到目标工作表的格式,条件格式和数据验证。这是通过copyTo of class Range完成的。
  4. 从目标电子表格中删除临时(隐藏)工作表。

注意:我将此功能包含在库中,因为它可以在数百个电子表格副本中使用。

**

功能

**:

var testArr = ["Jeremy", "John", "Hank", "Hal"];

我非常依赖here提供的答案。

ziganotschka,谢谢您的帮助!