我想在Q1和Q2工作表上都有一个下拉列表,但这只在Q1上是可能的。如何为两个工作表创建一个下拉列表?答案是似乎不能在电子表格上操作。该怎么办呢。
第一
function onEdit(){
var tabLists = "Q1";
var tabValidation = "DATA";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);
var activeCell = ss.getActiveCell();
if(activeCell.getColumn() == 1 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}
}第二
function onEdit(){
var tabLists = "Q2";
var tabValidation = "DATAS";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);
var activeCell = ss.getActiveCell();
if(activeCell.getColumn() == 1 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}发布于 2021-02-02 09:56:28
当Google Apps脚本项目有两个同名的函数声明时,其中一个函数将无法工作,因为函数名应该是唯一的。
一个快速而棘手的解决方案可能是重命名当前的on edit函数,然后从onEdit函数调用它们,或者为每个函数创建一个可安装的触发器。
一个更好的解决方案是重写函数的逻辑,将它们集成到一个函数上,特别是如果您将使用一个简单的触发器并向其添加更多操作,因为简单触发器的最大执行时间较短(30秒)。
相关
发布于 2021-02-02 07:02:03
function onEdit(e) {
const sh=e.range.getSheet();
//Logger.log(JSON.stringify(e));//add this if you want to learn more about event object.
const sheets=['Q1','Q2'];//Enter names of sheets that you want script to work on
if(sheets.indexOf(sh.getName())>-1 && e.range.columnStart==1 && e.range.rowStart>1) {
//run your code in here and it will only work for sheets whose names are in sheets
}
}https://stackoverflow.com/questions/65997392
复制相似问题