作者:zh1234之歌 | 来源:互联网 | 2023-06-08 17:36
是否可以为电子表格定义将“ Ctrl + V”(常规粘贴)视为“ Ctrl + Shift + V”(仅粘贴值)?不仅对我自己,对于任何可以编辑的用户。
原因:所涉及的电子表格中包含数据验证,格式设置和条件格式设置。用户在此电子表格中大量使用“ Ctrl + V”,因此这些设置经常被篡改
没有直接的方法可以实现,但是作为解决方法,您可以
将具有以下内容的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);
}
,
我很高兴地通知您,我已达到以下目标:
- 创建模板电子表格的副本,以仅用作设计设置模板。
- 将相关模板表从设计设置模板Ss复制到目标电子表格(同时保持隐藏状态)。这是通过copyTo of class Sheet完成的。
- 从模板工作表复制到目标工作表的格式,条件格式和数据验证。这是通过copyTo of class Range完成的。
- 从目标电子表格中删除临时(隐藏)工作表。
注意:我将此功能包含在库中,因为它可以在数百个电子表格副本中使用。
**
功能
**:
var testArr = ["Jeremy","John","Hank","Hal"];
我非常依赖here提供的答案。
ziganotschka,谢谢您的帮助!