获取单元格下拉框-不仅仅是值



我正在谷歌工作表中编写一个脚本,以便在添加新行时用下拉框预先填充单元格。电子表格的单元格A1有一个基本的下拉框选择器(数据验证(,其中有几个选项。下拉框没有连接到任何内容,也不用于任何操作。我只想将该下拉框复制到我添加到工作表的每一新行的第一个单元格中。

到目前为止,我的脚本将获得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中获取整个下拉框,并将其复制到添加的每一行的第一个单元格?以编程方式在每一新行的第一个单元格中创建一个简单的下拉框也是可以的,但我也没有找到这样做的方法。非常感谢您的帮助。

我认为您的意思是将数据验证作为一个下拉框?如果是这样的话,插入类似于这样的代码,它得到DataValidation而不是value:

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

为了说明,在本示例工作表中,如果运行以下myFunction(),它将在单元格A1中获得数据验证(即下拉框(,并将其设置为单元格A2:A10

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

相关内容

最新更新