首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将dependent下拉列表应用于两个工作表

如何将dependent下拉列表应用于两个工作表
EN

Stack Overflow用户
提问于 2021-02-02 01:31:09
回答 2查看 29关注 0票数 0

我想在Q1和Q2工作表上都有一个下拉列表,但这只在Q1上是可能的。如何为两个工作表创建一个下拉列表?答案是似乎不能在电子表格上操作。该怎么办呢。

第一

代码语言:javascript
复制
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);
  
     }  
      
  }
  
}

第二

代码语言:javascript
复制
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);
  
     }  
      
  }
EN

回答 2

Stack Overflow用户

发布于 2021-02-02 09:56:28

当Google Apps脚本项目有两个同名的函数声明时,其中一个函数将无法工作,因为函数名应该是唯一的。

一个快速而棘手的解决方案可能是重命名当前的on edit函数,然后从onEdit函数调用它们,或者为每个函数创建一个可安装的触发器。

一个更好的解决方案是重写函数的逻辑,将它们集成到一个函数上,特别是如果您将使用一个简单的触发器并向其添加更多操作,因为简单触发器的最大执行时间较短(30秒)。

相关

票数 1
EN

Stack Overflow用户

发布于 2021-02-02 07:02:03

代码语言:javascript
复制
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

  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65997392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档