获取 Cell Drop Box - 不仅仅是值

Get Cell Drop Box - not just values

我正在 Google sheet 中编写脚本,以便在添加新行时使用下拉框预填充单元格。 spreadsheet 的单元格 A1 有一个基本的下拉框选择器(数据验证),其中有几个选项。下拉框未连接到任何东西,也不用于任何操作。我只想将该下拉框复制到我添加到 sheet.

的每个新行的第一个单元格中

到目前为止,我的脚本将获取 A1 中下拉框的选定值,并将该值插入到新行的第一个单元格中。我想要的是整个下拉框,其中包含要添加到每个新行的所有选项——而不仅仅是值。到目前为止,这是我的脚本

function myFunction(e) {
 var sh = SpreadsheetApp.getActiveSheet();
 if(e.changeType === 'INSERT_ROW') {
 var row = sh.getActiveRange().getRow();
 var range = sh.getRange(1,1); 
 var dropbox = range.getValue();
 sh.getRange(row, 1).setValue(dropbox);
  }
}

所以 GetValue() 不是我需要的。有没有办法从 A1 获取整个下拉框并将其复制到添加的每个新行中的第一个单元格?在每个新行的第一个单元格中以编程方式创建一个简单的下拉框也很好,但我也没有找到这样做的方法。非常感谢任何帮助。

我想你的意思是 data validation 作为投递箱?如果是这样,请插入类似此代码的代码,以获取 DataValidation 而不是 value:

 var row = sh.getActiveRange().getRow();
 var range = sh.getRange(1,1); 
 var dropbox = range.getDataValidation();
 sh.getRange(row, 1).setDataValidation(dropbox);

为了说明,在 this example sheet 如果你 运行 下面 myFunction() 它将得到数据验证(即 drop box)单元格 A1 并将其设置为单元格 A2:A10.

/** @OnlyCurrentDoc*/

function myFunction() {
  const ss = SpreadsheetApp.getActiveSheet();
  var pullValidation = ss.getRange("A1").getDataValidation();
  ss.getRange("A2:A10").setDataValidation(pullValidation);
}