Validation 将图纸名称列表转换为数据验证

Validation 将图纸名称列表转换为数据验证,validation,google-apps-script,google-sheets,Validation,Google Apps Script,Google Sheets,下面是一段代码,我正试图将其转换为更大代码的一部分。有一点背景是,我正在尝试制作一个工作表名称列表,我可以将其制作成一个数据验证列表。然后进入我选择的工作表,并从该工作表中创建另一个数据验证列表。(这些都发生在我的主页上)下面的代码是我与谷歌时钟配对的自定义公式。它创建一个列表,然后我使用该列表创建数据验证列表。我试图编写的代码是我跳过中间人并使其动态化的方法 function sheetnames() { var out = new Array() var sheets = S

下面是一段代码,我正试图将其转换为更大代码的一部分。有一点背景是,我正在尝试制作一个工作表名称列表,我可以将其制作成一个数据验证列表。然后进入我选择的工作表,并从该工作表中创建另一个数据验证列表。(这些都发生在我的主页上)下面的代码是我与谷歌时钟配对的自定义公式。它创建一个列表,然后我使用该列表创建数据验证列表。我试图编写的代码是我跳过中间人并使其动态化的方法

  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 
                }
函数sheetnames(){
var out=新数组()
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
对于(var i=2;i尝试以下方法:

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() 
}
函数sheetnames(){
var out=[];
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();

对于(var i=2;i因此,由于我的问题在某些方面有所欠缺,我决定继续研究这个问题并解决它。然后分享我的发现!下面是一个脚本,它列出了所有工作表选项卡名称,然后我使用一个宏来创建数据验证列表。脚本的最后一部分介绍了我的数据验证选择和自动验证使用特定图纸名称中的项目列表填充其余行

    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”脚本直接转换为数据验证列表。如有任何帮助,将不胜感激

我试图创建的工作簿应该有助于创建订单,我制作的更大版本附带了价格。这可能是一个小众脚本的想法,但我希望它有用

让我知道你的想法! (以下链接)


您还没有问任何问题。您所说的“googleclock”是什么意思?@Rubén如果您将“googleclock”添加到一个函数(在我的例子中是一个自定义函数)。当工作表刷新时,公式会起作用。我的公式是=sheetnames(googleclock())据我所知,这将有助于保持一切最新,即使你改变了你从谷歌内置时钟功能中提取的数据。谷歌内置时钟功能已经退役几年了ago@Rub恩,它似乎对我的床单仍然有效