将工作表名称列表转换为数据验证

时间:2018-12-12 18:09:20

标签: validation google-apps-script google-sheets

下面是我要变成较大代码一部分的代码。有一点背景是我试图列出一个工作表名称,我可以将其制成数据验证列表。然后进入我选择的工作表,并从该工作表创建另一个数据验证列表。 (这一切都发生在我的主表中)下面的代码是我与googleclock配对的自定义公式。它创建一个列表,然后使用该列表创建我的数据验证列表。我试图编写的代码是我跳过中间人并使之动态的方式。

  function sheetnames() {
   var out = new Array()
   var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
   for (var i=2 ; i<sheets.length ; i++) out.push( [ 
   sheets[i].getName() ] )
     return out 
                }

一个人如何跳过中间人并制作一个数据验证名称列表(基于工作表标签名称)?

如果有帮助的话,我还会在所有工作表中自动填充所有工作表名称A1。

2 个答案:

答案 0 :(得分:0)

尝试一下:

function sheetnames() {
  var out=[];
  var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for(var i=2;i<sheets.length;i++){
    out.push([sheets[i].getName()]);
  }
  return out;//this is a 2d column array, hence useable in setValues() 
}

答案 1 :(得分:0)

因此,由于在某些方面缺少我的问题,所以我决定只解决该问题并加以解决。然后分享我的发现!以下是一个脚本,该脚本列出了所有工作表标签的名称,然后使用该列表,我使用了一个宏来制作数据验证列表。脚本的最后一部分着眼于我的数据验证选项,并使用来自特定工作表名称的项目列表自动填充其余行。

    function listSheetNames() {

     var names = SpreadsheetApp.getActive().getSheets()
        .map(function(s) {
            return [s.getName()];
        })
     SpreadsheetApp.getActive().getSheets()[0]
        .getRange(1, 1, names.length, names[0].length).setValues(names)

     Logger.log(names);

     }

      function onEdit () {

  var data = SpreadsheetApp.getActiveSpreadsheet();
  var ordersheet = SpreadsheetApp.getActiveSheet();
  var reference = ordersheet.getActiveCell().getValue();

     var range = ordersheet.getRange(2, 1, ordersheet.getLastRow()).getValues();


  if(reference = range) { 

 var sheetName = ordersheet.getActiveCell().getValue(); 
 var pullName = data.getSheetByName(sheetName);
 var datass = pullName.getRange(1, 1, pullName.getLastRow(), 1).getValues();

 var validationRule = SpreadsheetApp.newDataValidation().requireValueInList(datass).build(); 
 ordersheet.getActiveCell().offset(1, 0, 100).setDataValidation(validationRule);

    Logger.log(pullName); 

  }}

所以这是一个变通办法。我仍在尝试弄清楚如何使用我的“ listSheetnames”脚本并将其直接转换为数据验证列表。任何帮助将非常感激。

我要创建的工作簿应该有助于创建订单,而我为此制作的较大版本带有价格。这可能是一个小众脚本的想法,但我希望它是有用的。

让我知道您的想法! (下面的链接)

data validation with sheet names