复制和粘贴下拉列表会清除单元格
Copying & pasting drop down lists clears cells
所以我对脚本还很陌生,我有一些有效的动态依赖下拉列表。当我清除 A 列中的单元格时,它会直接清除它右侧的单元格,这很棒。
但是,当我复制并粘贴一行时,它会清除 A 列右侧的单元格。我的问题是:有没有办法使一行“可复制和粘贴” , 所以粘贴时不清除B列?
以下是我所描述内容的一些图片:
[1]: https://i.stack.imgur.com/F0xOg.png
[2]: https://i.stack.imgur.com/geHuu.png
最后,这是我正在使用的脚本:
function onEdit(){
var tabLists = "Exercise Index";
var spreadsheet = SpreadsheetApp;
var activeSheet = spreadsheet.getActiveSpreadsheet().getActiveSheet();
var data = spreadsheet.getActiveSpreadsheet().getSheetByName(tabLists);
var activeCell = activeSheet.getActiveCell();
if(activeCell.getColumn() == 1 && activeCell.getRow() > 3 && activeSheet.getSheetName().includes("Week")){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = data.getRange(1, 1, 1, data.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = data.getRange(2, makeIndex, data.getLastRow());
var validationRule = spreadsheet.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}
}
googlesheet的副本:https://docs.google.com/spreadsheets/d/1OrDTJiAlVJRU5tKCA55CoVgnT83_k8n_yz9BkWYpZ_0/edit?usp=sharing
提前致谢!
从您的回复来看,我认为您当前问题的原因是activeCell.offset(0, 1).clearContent().clearDataValidations()
。当您的脚本为 运行 时,活动单元格的右侧单元格将被清除。那么,在你的脚本中,下面的修改怎么样?
发件人:
activeCell.offset(0, 1).clearContent().clearDataValidations();
收件人:
activeCell.offset(0, 1).clearDataValidations();
或者,删除 activeCell.offset(0, 1).clearContent().clearDataValidations();
。
所以我对脚本还很陌生,我有一些有效的动态依赖下拉列表。当我清除 A 列中的单元格时,它会直接清除它右侧的单元格,这很棒。
但是,当我复制并粘贴一行时,它会清除 A 列右侧的单元格。我的问题是:有没有办法使一行“可复制和粘贴” , 所以粘贴时不清除B列?
以下是我所描述内容的一些图片: [1]: https://i.stack.imgur.com/F0xOg.png [2]: https://i.stack.imgur.com/geHuu.png
最后,这是我正在使用的脚本:
function onEdit(){
var tabLists = "Exercise Index";
var spreadsheet = SpreadsheetApp;
var activeSheet = spreadsheet.getActiveSpreadsheet().getActiveSheet();
var data = spreadsheet.getActiveSpreadsheet().getSheetByName(tabLists);
var activeCell = activeSheet.getActiveCell();
if(activeCell.getColumn() == 1 && activeCell.getRow() > 3 && activeSheet.getSheetName().includes("Week")){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = data.getRange(1, 1, 1, data.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = data.getRange(2, makeIndex, data.getLastRow());
var validationRule = spreadsheet.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}
}
googlesheet的副本:https://docs.google.com/spreadsheets/d/1OrDTJiAlVJRU5tKCA55CoVgnT83_k8n_yz9BkWYpZ_0/edit?usp=sharing
提前致谢!
从您的回复来看,我认为您当前问题的原因是activeCell.offset(0, 1).clearContent().clearDataValidations()
。当您的脚本为 运行 时,活动单元格的右侧单元格将被清除。那么,在你的脚本中,下面的修改怎么样?
发件人:
activeCell.offset(0, 1).clearContent().clearDataValidations();
收件人:
activeCell.offset(0, 1).clearDataValidations();
或者,删除 activeCell.offset(0, 1).clearContent().clearDataValidations();
。